├── .classpath ├── .gitignore ├── .project ├── .settings ├── org.eclipse.core.resources.prefs ├── org.eclipse.jdt.core.prefs └── org.eclipse.m2e.core.prefs ├── FFTW ├── FFTWJNIWin32.dll ├── FFTWJNIWin64.dll ├── Wisdom ├── libFFTWJNI32.so ├── libFFTWJNI64.so └── libFFTWJNIMac.jnilib ├── HISTORY.md ├── LICENSE ├── README.md ├── TODO.md ├── bin ├── DeconvolutionLab2.config ├── demos │ ├── DemoSimulationAndAlgorithms_CommandLineInterface.sh │ ├── DemoSimulationAndAlgorithms_ImageJMacro.ijm │ └── DemoSimulationAndAlgorithms_Matlab.m ├── plugins.config └── resources │ └── celegans.jpg ├── build.xml ├── dist └── DeconvolutionLab2.config ├── doc ├── DL2.html ├── DeconvolutionLab2.html ├── DeconvolutionLab2_Help.html ├── DeconvolutionLab2_Lab.html ├── DeconvolutionLab2_Launch.html ├── DeconvolutionLab2_Resources.html ├── DeconvolutionLab2_Run.html ├── allclasses-frame.html ├── allclasses-noframe.html ├── bilib │ ├── component │ │ ├── BorderToggledButton.html │ │ ├── GridPanel.html │ │ ├── GridToolbar.html │ │ ├── HTMLPane.html │ │ ├── PanelImage.html │ │ ├── SpinnerRangeDouble.html │ │ ├── SpinnerRangeFloat.html │ │ ├── SpinnerRangeInteger.html │ │ ├── package-frame.html │ │ ├── package-summary.html │ │ └── package-tree.html │ ├── table │ │ ├── CustomizedColumn.html │ │ ├── CustomizedTable.ButtonRenderer.html │ │ ├── CustomizedTable.DoubleFormattedRenderer.html │ │ ├── CustomizedTable.html │ │ ├── package-frame.html │ │ ├── package-summary.html │ │ └── package-tree.html │ └── tools │ │ ├── Bessel.html │ │ ├── Files.html │ │ ├── NumFormat.html │ │ ├── PsRandom.html │ │ ├── WebBrowser.html │ │ ├── package-frame.html │ │ ├── package-summary.html │ │ └── package-tree.html ├── constant-values.html ├── deconvolution │ ├── Command.html │ ├── CommandSegment.html │ ├── CommandToken.html │ ├── Deconvolution.Finish.html │ ├── Deconvolution.html │ ├── DeconvolutionDialog.Module.html │ ├── DeconvolutionDialog.State.html │ ├── DeconvolutionDialog.html │ ├── Features.html │ ├── RegularizationPanel.html │ ├── Stats.Mode.html │ ├── Stats.html │ ├── algorithm │ │ ├── Algorithm.html │ │ ├── AlgorithmList.html │ │ ├── AlgorithmPanel.html │ │ ├── Constraint.html │ │ ├── Controller.html │ │ ├── Convolution.html │ │ ├── ConvolutionPanel.html │ │ ├── FISTA.html │ │ ├── FISTAPanel.html │ │ ├── ICTM.html │ │ ├── ICTMPanel.html │ │ ├── ISTA.html │ │ ├── ISTAPanel.html │ │ ├── Identity.html │ │ ├── IdentityPanel.html │ │ ├── Landweber.html │ │ ├── LandweberPanel.html │ │ ├── LandweberPositivity.html │ │ ├── LandweberPositivityPanel.html │ │ ├── NaiveInverseFilter.html │ │ ├── NaiveInverseFilterPanel.html │ │ ├── NonStabilizedDivision.html │ │ ├── NonStabilizedDivisionPanel.html │ │ ├── RegularizedInverseFilter.html │ │ ├── RegularizedInverseFilterPanel.html │ │ ├── RichardsonLucy.html │ │ ├── RichardsonLucyPanel.html │ │ ├── RichardsonLucyTV.html │ │ ├── RichardsonLucyTVPanel.html │ │ ├── Simulation.html │ │ ├── SimulationPanel.html │ │ ├── StarkParker.html │ │ ├── StarkParkerPanel.html │ │ ├── TikhonovMiller.html │ │ ├── TikhonovMillerPanel.html │ │ ├── TikhonovRegularizedInverseFilter.html │ │ ├── TikhonovRegularizedInverseFilterPanel.html │ │ ├── VanCittert.html │ │ ├── VanCittertPanel.html │ │ ├── package-frame.html │ │ ├── package-summary.html │ │ └── package-tree.html │ ├── capsule │ │ ├── AbstractCapsule.html │ │ ├── AlgorithmCapsule.html │ │ ├── ImageCapsule.html │ │ ├── PSFCapsule.html │ │ ├── RecapCapsule.html │ │ ├── ReportCapsule.html │ │ ├── ResourcesCapsule.html │ │ ├── package-frame.html │ │ ├── package-summary.html │ │ └── package-tree.html │ ├── package-frame.html │ ├── package-summary.html │ └── package-tree.html ├── deconvolutionlab │ ├── Config.html │ ├── Constants.html │ ├── Imager.ContainerImage.html │ ├── Imager.Type.html │ ├── Imager.html │ ├── Lab.html │ ├── LabDialog.html │ ├── LabPanel.html │ ├── Platform.html │ ├── dialog │ │ ├── BatchDialog.html │ │ ├── OutputDialog.html │ │ ├── PatternDialog.html │ │ ├── SyntheticDialog.html │ │ ├── package-frame.html │ │ ├── package-summary.html │ │ └── package-tree.html │ ├── module │ │ ├── AboutModule.html │ │ ├── AbstractImageSelectionModule.html │ │ ├── AbstractModule.html │ │ ├── AlgorithmModule.html │ │ ├── BatchModule.html │ │ ├── CommandModule.html │ │ ├── ComputationModule.html │ │ ├── ConfigModule.html │ │ ├── ControllerModule.html │ │ ├── DirectoryModule.LocalDropTarget.html │ │ ├── DirectoryModule.html │ │ ├── GroupedModulePanel.html │ │ ├── ImageModule.LocalDropTarget.html │ │ ├── ImageModule.html │ │ ├── LanguageModule.html │ │ ├── LicenceModule.html │ │ ├── OutputModule.html │ │ ├── PSFModule.LocalDropTarget.html │ │ ├── PSFModule.html │ │ ├── PreprocessingModule.html │ │ ├── ReferenceModule.LocalDropTarget.html │ │ ├── ReferenceModule.html │ │ ├── ResourcesModule.html │ │ ├── dropdownbuttons │ │ │ ├── AbstractDropDownButton.html │ │ │ ├── AddOutputDropDownButton.html │ │ │ ├── ChooseImageDropDownButton.html │ │ │ ├── ShowImageDropDownButton.html │ │ │ ├── gpl │ │ │ │ └── swingcomponents │ │ │ │ │ ├── JSplitButton.html │ │ │ │ │ ├── SplitButtonActionListener.html │ │ │ │ │ ├── package-frame.html │ │ │ │ │ ├── package-summary.html │ │ │ │ │ └── package-tree.html │ │ │ ├── package-frame.html │ │ │ ├── package-summary.html │ │ │ └── package-tree.html │ │ ├── package-frame.html │ │ ├── package-summary.html │ │ └── package-tree.html │ ├── monitor │ │ ├── AbstractMonitor.html │ │ ├── ConsoleMonitor.html │ │ ├── Message.html │ │ ├── Monitors.html │ │ ├── RunningMonitor.html │ │ ├── StatusMonitor.html │ │ ├── TableMonitor.html │ │ ├── Verbose.html │ │ ├── package-frame.html │ │ ├── package-summary.html │ │ └── package-tree.html │ ├── output │ │ ├── OutFigure.html │ │ ├── OutMIP.html │ │ ├── OutOrtho.html │ │ ├── OutPlanar.html │ │ ├── OutSeries.html │ │ ├── OutStack.html │ │ ├── Output.Action.html │ │ ├── Output.Dynamic.html │ │ ├── Output.View.html │ │ ├── Output.html │ │ ├── SaveFigure.html │ │ ├── SaveMIP.html │ │ ├── SaveOrtho.html │ │ ├── SavePlanar.html │ │ ├── SaveSeries.html │ │ ├── SaveStack.html │ │ ├── ShowFigure.html │ │ ├── ShowMIP.html │ │ ├── ShowOrtho.html │ │ ├── ShowPlanar.html │ │ ├── ShowSeries.html │ │ ├── ShowStack.html │ │ ├── package-frame.html │ │ ├── package-summary.html │ │ └── package-tree.html │ ├── package-frame.html │ ├── package-summary.html │ ├── package-tree.html │ └── system │ │ ├── AbstractMeter.html │ │ ├── FFTMeter.html │ │ ├── FileMeter.html │ │ ├── JavaMeter.html │ │ ├── MemoryMeter.html │ │ ├── ProcessorMeter.html │ │ ├── RuntimeInfoPanel.html │ │ ├── SignalMeter.html │ │ ├── SystemInfo.html │ │ ├── SystemUsage.html │ │ ├── package-frame.html │ │ ├── package-summary.html │ │ └── package-tree.html ├── demos │ ├── CompareFFTs.html │ ├── DemoSimulationAndAlgorithms.html │ ├── DemoSimulationAndAlgorithms_Java.html │ ├── DemoSimulationAndAlgorithms_JavaCommand.html │ ├── DemoSimulationAndAlgorithms_JavaLibrary.html │ ├── RestartRichardsonLucy.html │ ├── SimualtionAndDeconvolution.html │ ├── package-frame.html │ ├── package-summary.html │ └── package-tree.html ├── deprecated-list.html ├── help-doc.html ├── imagej │ ├── IJImager.Dialog.html │ ├── IJImager.html │ ├── IJMonitor.html │ ├── package-frame.html │ ├── package-summary.html │ └── package-tree.html ├── index-all.html ├── index.html ├── matlab │ ├── Converter.html │ ├── package-frame.html │ ├── package-summary.html │ └── package-tree.html ├── overview-frame.html ├── overview-summary.html ├── overview-tree.html ├── package-frame.html ├── package-list ├── package-summary.html ├── package-tree.html ├── plugins │ └── sage │ │ └── deconvolutionlab │ │ ├── DeconvolutionLabIcyFrame.html │ │ ├── Deconvolutionlab2.html │ │ ├── IcyImager.html │ │ ├── Test.html │ │ ├── package-frame.html │ │ ├── package-summary.html │ │ └── package-tree.html ├── resources │ ├── ImageLoader.html │ ├── package-frame.html │ ├── package-summary.html │ └── package-tree.html ├── script.js ├── serialized-form.html ├── signal │ ├── Assessment.html │ ├── ComplexComponent.html │ ├── ComplexSignal.html │ ├── Constraint.Mode.html │ ├── Constraint.html │ ├── Operations.html │ ├── RealSignal.html │ ├── Signal.html │ ├── SignalCollector.html │ ├── SignalListener.html │ ├── apodization │ │ ├── AbstractApodization.html │ │ ├── Apodization.html │ │ ├── HammingApodization.html │ │ ├── HannApodization.html │ │ ├── RaisedCosineApodization.html │ │ ├── TukeyApodization.html │ │ ├── UniformApodization.html │ │ ├── WelchApodization.html │ │ ├── package-frame.html │ │ ├── package-summary.html │ │ └── package-tree.html │ ├── factory │ │ ├── Airy.html │ │ ├── Astigmatism.html │ │ ├── AxialDiffractionSimulation.html │ │ ├── BesselJ0.html │ │ ├── Constant.html │ │ ├── Cross.html │ │ ├── Cube.html │ │ ├── CubeSphericalBeads.html │ │ ├── Defocus.html │ │ ├── DirectionalDerivative.html │ │ ├── DirectionalMotionBlur.html │ │ ├── DoG.html │ │ ├── DoubleHelix.html │ │ ├── Gaussian.html │ │ ├── Impulse.html │ │ ├── Laplacian.html │ │ ├── Ramp.html │ │ ├── RandomLines.html │ │ ├── SignalFactory.Worker.html │ │ ├── SignalFactory.html │ │ ├── Sinc.html │ │ ├── Sphere.html │ │ ├── Torus.html │ │ ├── complex │ │ │ ├── ComplexSignalFactory.html │ │ │ ├── package-frame.html │ │ │ ├── package-summary.html │ │ │ └── package-tree.html │ │ ├── package-frame.html │ │ ├── package-summary.html │ │ └── package-tree.html │ ├── package-frame.html │ ├── package-summary.html │ ├── package-tree.html │ ├── padding │ │ ├── AbstractPadding.html │ │ ├── EvenPadding.html │ │ ├── Multiple235Padding.html │ │ ├── Multiple23Padding.html │ │ ├── Multiple2Padding.html │ │ ├── Multiple8Padding.html │ │ ├── MultiplePadding.html │ │ ├── NoPadding.html │ │ ├── Padding.html │ │ ├── Power2Padding.html │ │ ├── package-frame.html │ │ ├── package-summary.html │ │ └── package-tree.html │ └── range │ │ ├── AbstractRange.html │ │ ├── ClippedRange.html │ │ ├── IdentityRange.html │ │ ├── NonNegativeRange.html │ │ ├── NormalizedRange.html │ │ ├── RescaledRange.html │ │ ├── package-frame.html │ │ ├── package-summary.html │ │ └── package-tree.html ├── stylesheet.css └── wavelets │ ├── AbstractWavelets.html │ ├── Wavelets.html │ ├── haar │ ├── HaarWavelets.html │ ├── package-frame.html │ ├── package-summary.html │ └── package-tree.html │ ├── package-frame.html │ ├── package-summary.html │ ├── package-tree.html │ └── spline │ ├── Spline1Wavelets.html │ ├── Spline3Wavelets.html │ ├── Spline5Wavelets.html │ ├── SplineFilter.html │ ├── SplineWaveletsTool.html │ ├── package-frame.html │ ├── package-summary.html │ └── package-tree.html ├── pom.xml └── src └── main ├── java ├── DL2.java ├── DeconvolutionLab2.java ├── DeconvolutionLab2_Help.java ├── DeconvolutionLab2_Lab.java ├── DeconvolutionLab2_Launch.java ├── DeconvolutionLab2_Resources.java ├── DeconvolutionLab2_Run.java ├── bilib │ ├── component │ │ ├── BorderToggledButton.java │ │ ├── GridPanel.java │ │ ├── GridToolbar.java │ │ ├── HTMLPane.java │ │ ├── PanelImage.java │ │ ├── SpinnerRangeDouble.java │ │ ├── SpinnerRangeFloat.java │ │ └── SpinnerRangeInteger.java │ ├── table │ │ ├── CustomizedColumn.java │ │ └── CustomizedTable.java │ └── tools │ │ ├── Bessel.java │ │ ├── Files.java │ │ ├── NumFormat.java │ │ ├── PsRandom.java │ │ └── WebBrowser.java ├── deconvolution │ ├── Command.java │ ├── CommandSegment.java │ ├── CommandToken.java │ ├── Deconvolution.java │ ├── DeconvolutionDialog.java │ ├── Features.java │ ├── RegularizationPanel.java │ ├── Stats.java │ ├── algorithm │ │ ├── Algorithm.java │ │ ├── AlgorithmList.java │ │ ├── AlgorithmPanel.java │ │ ├── Constraint.java │ │ ├── Controller.java │ │ ├── Convolution.java │ │ ├── ConvolutionPanel.java │ │ ├── FISTA.java │ │ ├── FISTAPanel.java │ │ ├── ICTM.java │ │ ├── ICTMPanel.java │ │ ├── ISTA.java │ │ ├── ISTAPanel.java │ │ ├── Identity.java │ │ ├── IdentityPanel.java │ │ ├── Landweber.java │ │ ├── LandweberPanel.java │ │ ├── LandweberPositivity.java │ │ ├── LandweberPositivityPanel.java │ │ ├── NaiveInverseFilter.java │ │ ├── NaiveInverseFilterPanel.java │ │ ├── NonStabilizedDivision.java │ │ ├── NonStabilizedDivisionPanel.java │ │ ├── RegularizedInverseFilter.java │ │ ├── RegularizedInverseFilterPanel.java │ │ ├── RichardsonLucy.java │ │ ├── RichardsonLucyPanel.java │ │ ├── RichardsonLucyTV.java │ │ ├── RichardsonLucyTVPanel.java │ │ ├── Simulation.java │ │ ├── SimulationPanel.java │ │ ├── StarkParker.java │ │ ├── StarkParkerPanel.java │ │ ├── TikhonovMiller.java │ │ ├── TikhonovMillerPanel.java │ │ ├── TikhonovRegularizedInverseFilter.java │ │ ├── TikhonovRegularizedInverseFilterPanel.java │ │ ├── VanCittert.java │ │ └── VanCittertPanel.java │ └── capsule │ │ ├── AbstractCapsule.java │ │ ├── AlgorithmCapsule.java │ │ ├── ImageCapsule.java │ │ ├── PSFCapsule.java │ │ ├── RecapCapsule.java │ │ ├── ReportCapsule.java │ │ └── ResourcesCapsule.java ├── deconvolutionlab │ ├── Config.java │ ├── Constants.java │ ├── Imager.java │ ├── Lab.java │ ├── LabDialog.java │ ├── LabPanel.java │ ├── Platform.java │ ├── dialog │ │ ├── BatchDialog.java │ │ ├── OutputDialog.java │ │ ├── PatternDialog.java │ │ └── SyntheticDialog.java │ ├── module │ │ ├── AboutModule.java │ │ ├── AbstractImageSelectionModule.java │ │ ├── AbstractModule.java │ │ ├── AlgorithmModule.java │ │ ├── BatchModule.java │ │ ├── CommandModule.java │ │ ├── ComputationModule.java │ │ ├── ConfigModule.java │ │ ├── ControllerModule.java │ │ ├── DirectoryModule.java │ │ ├── GroupedModulePanel.java │ │ ├── ImageModule.java │ │ ├── LanguageModule.java │ │ ├── LicenceModule.java │ │ ├── OutputModule.java │ │ ├── PSFModule.java │ │ ├── PreprocessingModule.java │ │ ├── ReferenceModule.java │ │ ├── ResourcesModule.java │ │ └── dropdownbuttons │ │ │ ├── AbstractDropDownButton.java │ │ │ ├── AddOutputDropDownButton.java │ │ │ ├── ChooseImageDropDownButton.java │ │ │ ├── ShowImageDropDownButton.java │ │ │ └── gpl │ │ │ └── swingcomponents │ │ │ ├── JSplitButton.java │ │ │ └── SplitButtonActionListener.java │ ├── monitor │ │ ├── AbstractMonitor.java │ │ ├── ConsoleMonitor.java │ │ ├── Message.java │ │ ├── Monitors.java │ │ ├── RunningMonitor.java │ │ ├── StatusMonitor.java │ │ ├── TableMonitor.java │ │ └── Verbose.java │ ├── output │ │ ├── OutFigure.java │ │ ├── OutMIP.java │ │ ├── OutOrtho.java │ │ ├── OutPlanar.java │ │ ├── OutSeries.java │ │ ├── OutStack.java │ │ ├── Output.java │ │ ├── SaveFigure.java │ │ ├── SaveMIP.java │ │ ├── SaveOrtho.java │ │ ├── SavePlanar.java │ │ ├── SaveSeries.java │ │ ├── SaveStack.java │ │ ├── ShowFigure.java │ │ ├── ShowMIP.java │ │ ├── ShowOrtho.java │ │ ├── ShowPlanar.java │ │ ├── ShowSeries.java │ │ └── ShowStack.java │ └── system │ │ ├── AbstractMeter.java │ │ ├── FFTMeter.java │ │ ├── FileMeter.java │ │ ├── JavaMeter.java │ │ ├── MemoryMeter.java │ │ ├── ProcessorMeter.java │ │ ├── RuntimeInfoPanel.java │ │ ├── SignalMeter.java │ │ ├── SystemInfo.java │ │ └── SystemUsage.java ├── demos │ ├── DemoSimulationAndAlgorithms_JavaCommand.java │ └── DemoSimulationAndAlgorithms_JavaLibrary.java ├── fft │ ├── AbstractFFT.java │ ├── AbstractFFTLibrary.java │ ├── FFT.java │ ├── FFTPanel.java │ ├── Separability.java │ ├── academic │ │ ├── Academic.java │ │ ├── AcademicFFT.java │ │ ├── AcademicFFT_XYZ.java │ │ ├── AcademicFFT_XY_Z.java │ │ └── AcademicLibrary.java │ ├── fftw │ │ ├── FFTW3D.java │ │ └── FFTWLibrary.java │ └── jtransforms │ │ ├── JTransforms.java │ │ ├── JTransformsFFT_XYZ.java │ │ ├── JTransformsFFT_XY_Z.java │ │ └── JTransformsLibrary.java ├── imagej │ ├── IJImager.java │ └── IJMonitor.java ├── jfftw │ ├── Plan.java │ ├── complex │ │ ├── Plan.java │ │ └── nd │ │ │ └── Plan.java │ └── real │ │ ├── Plan.java │ │ └── nd │ │ └── Plan.java ├── matlab │ └── Converter.java ├── plugins │ └── sage │ │ └── deconvolutionlab │ │ ├── DeconvolutionLabIcyFrame.java │ │ ├── Deconvolutionlab2.java │ │ ├── IcyImager.java │ │ └── Test.java ├── resources │ ├── ImageLoader.java │ └── celegans.jpg ├── signal │ ├── Assessment.java │ ├── ComplexComponent.java │ ├── ComplexSignal.java │ ├── Constraint.java │ ├── Operations.java │ ├── RealSignal.java │ ├── Signal.java │ ├── SignalCollector.java │ ├── SignalListener.java │ ├── apodization │ │ ├── AbstractApodization.java │ │ ├── Apodization.java │ │ ├── HammingApodization.java │ │ ├── HannApodization.java │ │ ├── RaisedCosineApodization.java │ │ ├── TukeyApodization.java │ │ ├── UniformApodization.java │ │ └── WelchApodization.java │ ├── factory │ │ ├── Airy.java │ │ ├── Astigmatism.java │ │ ├── AxialDiffractionSimulation.java │ │ ├── BesselJ0.java │ │ ├── Constant.java │ │ ├── Cross.java │ │ ├── Cube.java │ │ ├── CubeSphericalBeads.java │ │ ├── Defocus.java │ │ ├── DirectionalDerivative.java │ │ ├── DirectionalMotionBlur.java │ │ ├── DoG.java │ │ ├── DoubleHelix.java │ │ ├── Gaussian.java │ │ ├── Impulse.java │ │ ├── Laplacian.java │ │ ├── Ramp.java │ │ ├── RandomLines.java │ │ ├── SignalFactory.java │ │ ├── Sinc.java │ │ ├── Sphere.java │ │ ├── Torus.java │ │ └── complex │ │ │ └── ComplexSignalFactory.java │ ├── padding │ │ ├── AbstractPadding.java │ │ ├── EvenPadding.java │ │ ├── Multiple235Padding.java │ │ ├── Multiple23Padding.java │ │ ├── Multiple2Padding.java │ │ ├── Multiple8Padding.java │ │ ├── MultiplePadding.java │ │ ├── NoPadding.java │ │ ├── Padding.java │ │ └── Power2Padding.java │ └── range │ │ ├── AbstractRange.java │ │ ├── ClippedRange.java │ │ ├── IdentityRange.java │ │ ├── NonNegativeRange.java │ │ ├── NormalizedRange.java │ │ └── RescaledRange.java └── wavelets │ ├── AbstractWavelets.java │ ├── Wavelets.java │ ├── haar │ └── HaarWavelets.java │ └── spline │ ├── Spline1Wavelets.java │ ├── Spline3Wavelets.java │ ├── Spline5Wavelets.java │ ├── SplineFilter.java │ └── SplineWaveletsTool.java └── resources ├── DeconvolutionLab2.config ├── demos ├── DemoSimulationAndAlgorithms_CommandLineInterface.sh ├── DemoSimulationAndAlgorithms_ImageJMacro.ijm └── DemoSimulationAndAlgorithms_Matlab.m └── plugins.config /.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled class file 2 | *.class 3 | *.DS_Store 4 | *.html 5 | 6 | # Log file 7 | *.log 8 | 9 | # BlueJ files 10 | *.ctxt 11 | 12 | # Mobile Tools for Java (J2ME) 13 | .mtj.tmp/ 14 | 15 | # Package Files # 16 | *.jar 17 | *.war 18 | *.nar 19 | *.ear 20 | *.zip 21 | *.tar.gz 22 | *.rar 23 | 24 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 25 | hs_err_pid* 26 | /target/ 27 | 28 | !bin/ 29 | !doc/* 30 | -------------------------------------------------------------------------------- /.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | DeconvolutionLab2 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | org.eclipse.m2e.core.maven2Builder 15 | 16 | 17 | 18 | 19 | 20 | org.eclipse.jdt.core.javanature 21 | org.eclipse.m2e.core.maven2Nature 22 | 23 | 24 | -------------------------------------------------------------------------------- /.settings/org.eclipse.core.resources.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | encoding/=UTF-8 3 | -------------------------------------------------------------------------------- /.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 3 | org.eclipse.jdt.core.compiler.compliance=1.8 4 | org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning 5 | org.eclipse.jdt.core.compiler.source=1.8 6 | -------------------------------------------------------------------------------- /.settings/org.eclipse.m2e.core.prefs: -------------------------------------------------------------------------------- 1 | activeProfiles= 2 | eclipse.preferences.version=1 3 | resolveWorkspaceProjects=true 4 | version=1 5 | -------------------------------------------------------------------------------- /FFTW/FFTWJNIWin32.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Biomedical-Imaging-Group/DeconvolutionLab2/e9af0aba493ba137d70877154648e5583e376a81/FFTW/FFTWJNIWin32.dll -------------------------------------------------------------------------------- /FFTW/FFTWJNIWin64.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Biomedical-Imaging-Group/DeconvolutionLab2/e9af0aba493ba137d70877154648e5583e376a81/FFTW/FFTWJNIWin64.dll -------------------------------------------------------------------------------- /FFTW/Wisdom: -------------------------------------------------------------------------------- 1 | (FFTW-2.1.5) -------------------------------------------------------------------------------- /FFTW/libFFTWJNI32.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Biomedical-Imaging-Group/DeconvolutionLab2/e9af0aba493ba137d70877154648e5583e376a81/FFTW/libFFTWJNI32.so -------------------------------------------------------------------------------- /FFTW/libFFTWJNI64.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Biomedical-Imaging-Group/DeconvolutionLab2/e9af0aba493ba137d70877154648e5583e376a81/FFTW/libFFTWJNI64.so -------------------------------------------------------------------------------- /FFTW/libFFTWJNIMac.jnilib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Biomedical-Imaging-Group/DeconvolutionLab2/e9af0aba493ba137d70877154648e5583e376a81/FFTW/libFFTWJNIMac.jnilib -------------------------------------------------------------------------------- /HISTORY.md: -------------------------------------------------------------------------------- 1 | 2 | ## Version 2.1.2 of DeconvolutionLab2 (27 June 2018) 3 | - Allow snapshot for stack output and series ouptut 4 | 5 | ## Version 2.1.1 of DeconvolutionLab2 (21 June 2018) 6 | 7 | - Add the command SIM and several show commands in Matlab interface class DL2. 8 | - Fix the bug: no Matlab return (run in ExecutorService for Matlab only). 9 | - Remove the debug message (exception): JTransform not found. 10 | - Fix a bug: fourth parameters of the "synthetic" dialog box was not reset. 11 | - Add overlay on mip, ortho, and planar outputs. 12 | - Output mip, ortho, planar with nz=1, return the duplicate image itself, no overlay. 13 | - Remove the option display. The Final Display is performed on ImageJ and ICY only if there is no other output. 14 | - Simplify the output panel, direct select of dynamic and type in the Output table 15 | - New check and choose button on Image/PSF/Reference panels. 16 | - Stop criteria on iteration is not strictly or equal. 17 | - Add demo: RestartRichardsonLucy, SimulationAndDeconvolution 18 | - Add run() with a ref 19 | - Create a panel for the reference 20 | - Dynamic range constraints are implementations of the AbstractRange 21 | - Compilation in Java 1.8 22 | 23 | 24 | ## Version 2.0.0 of DeconvolutionLab2 (08 May 2017) 25 | - First public release -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | DeconvolutionLab2 2 | ================= 3 | _Java software package for 3D deconvolution microscopy_ 4 | 5 | http://bigwww.epfl.ch/deconvolution/deconvolutionlab2/ 6 | 7 | 8 | ## Outline 9 | DeconvolutionLab2 is freely accessible and open-source for 3D deconvolution microscopy; it can be linked to well-known imaging software platforms, ImageJ, Fiji, ICY, Matlab, and it runs as a stand-alone application. 10 | The backbone of our software architecture is a library that contains the number-crunching elements of the deconvolution task. It includes the tool for a complete validation pipeline. Inquisitive minds inclined to peruse the code will find it fosters the understanding of deconvolution. 11 | At this stage, DeconvolutionLab2 includes a friendly user interface to run the following algortihms: Regularized Inverse Filter, Tikhonov Inverse Filter Naive Inverse Filter, Richardson-Lucy, Richardson-Lucy Total Variation, Landweber (Linear Least Squares), Non-negative Least Squares, Bounded-Variable Least Squares, Van Cittert, Tikhonov-Miller, Iterative Constraint Tikhonov-Miller, FISTA, ISTA. -------------------------------------------------------------------------------- /TODO.md: -------------------------------------------------------------------------------- 1 | 2 | - leakage of memory (not reproductible) 3 | - improving the synthetic 4 | - multiple channels 5 | -------------------------------------------------------------------------------- /bin/DeconvolutionLab2.config: -------------------------------------------------------------------------------- 1 | #DeconvolutionLab2 2 | #Mon May 28 21:50:19 CEST 2018 3 | Resources.epsilon=1E-6 4 | Preprocessing.extxy=0 5 | Algorithm.NNLS.iterations=10 6 | Algorithm.RIF.reg=0.1 7 | Algorithm.FISTA.iterations=10 8 | Preprocessing.apoz=Uniform 9 | Algorithm.ICTM.reg=0.1 10 | Algorithm.algorithm=Regularized Inverse Filter 11 | Algorithm.SIM.gaussian.stdev=1.0 12 | Preprocessing.extz=0 13 | DeconvolutionLab.MainDialog.location.y=23 14 | DeconvolutionLab.MainDialog.location.x=0 15 | DeconvolutionLab.MainDialog.location.w=562 16 | Algorithm.ISTA.wavelets=Haar 17 | Algorithm.TRIF.reg=0.1 18 | Language.job=Job 19 | Language.headless=Run (Headless) 20 | Algorithm.LW.iterations=10 21 | Algorithm.BVLS.step=1.0 22 | Resources.fft=Fastest 23 | Algorithm.FISTA.reg=0.1 24 | Algorithm.ISTA.scale=3 25 | Preprocessing.apoxy=Uniform 26 | Algorithm.ICTM.iterations=10 27 | Controller.constraint=no 28 | Algorithm.RLTV.reg=0.1 29 | Preprocessing.padxy=None 30 | DeconvolutionLab.MainDialog.location.h=490 31 | Algorithm.ISTA.reg=0.1 32 | Controller.residu.enable=false 33 | Algorithm.TM.iterations=10 34 | Algorithm.VC.iterations=10 35 | Controller.time.value=3600 36 | Algorithm.VC.step=1.0 37 | Algorithm.RL.iterations=10 38 | Controller.reference.enable=false 39 | Controller.residu.value=0.01 40 | Algorithm.BVLS.iterations=10 41 | Preprocessing.padz=None 42 | Algorithm.ISTA.iterations=10 43 | Controller.monitor=console table 44 | Controller.reference.value= 45 | Resources.system=yes 46 | Algorithm.TM.reg=0.1 47 | Algorithm.SIM.poisson=0.0 48 | Algorithm.FISTA.step=1.0 49 | Algorithm.TM.step=1.0 50 | Language.language=Command line 51 | Algorithm.FISTA.scale=3 52 | Algorithm.SIM.gaussian.mean=0.0 53 | Algorithm.ICTM.step=1.0 54 | Preprocessing.normalization=1 55 | Path.path=/Volumes/GoogleDrive/My Drive/workspace/DeconvolutionLab2.1-1.6/ 56 | Output.display=true 57 | Algorithm.ISTA.step=1.0 58 | Controller.time.enable=false 59 | Algorithm.LW.step=1.0 60 | Path.current=current 61 | Algorithm.NNLS.step=1.0 62 | Controller.stats=no 63 | Controller.verbose=log 64 | Algorithm.FISTA.wavelets=Haar 65 | Resources.multithreading=yes 66 | -------------------------------------------------------------------------------- /bin/demos/DemoSimulationAndAlgorithms_CommandLineInterface.sh: -------------------------------------------------------------------------------- 1 | # 2 | # This demo exists in 5 different interfaces: 3 | # - using ImageJ Macro 4 | # - using the command line interface (cshell) 5 | # - in Java, using the DeconvolutionLab2 as a Java Library 6 | # - in Java, using the command of DeconvolutionLab2 7 | # - in Matlab, calling methods of the class DL2 8 | # 9 | 10 | java -jar DeconvolutionLab_2.jar Run -image synthetic CubeSphericalBeads 5.0 0.2 12.0 12.0 size 96 80 64 intensity 128 -psf synthetic Gaussian 2.0 2.0 2.0 size 64 64 64 -algorithm I -out mistackp noshow reference -out mip rescaled byte noshow reference_mip_8bits -out stack reference noshow -path current -monitor console 11 | java -jar DeconvolutionLab_2.jar Run -image file reference.tif -psf synthetic Gaussian 2.0 2.0 2.0 size 64 64 64 -algorithm SIM 0 0 4 -out stack noshow simulation -out mip rescaled byte noshow simulation_mip_8bits -out stack simulation noshow -path current -monitor console 12 | java -jar DeconvolutionLab_2.jar Run -image file simulation.tif -reference file reference.tif -psf synthetic Gaussian 2.0 2.0 2.0 -algorithm RIF 0.01 -out stack noshow RIF -out mip rescaled byte noshow RIF_mip_8bits -stats RIF noshow -path current -monitor console 13 | java -jar DeconvolutionLab_2.jar Run -image file simulation.tif -reference file reference.tif -psf synthetic Gaussian 2.0 2.0 2.0 -algorithm RL 50 -out stack noshow RL -out mip rescaled byte noshow RL_mip_8bits -stats RL noshow -path current -monitor console 14 | java -jar DeconvolutionLab_2.jar Run -image file simulation.tif -reference file reference.tif -psf synthetic Gaussian 2.0 2.0 2.0 -algorithm LW 50 1.5 -out stack noshow LWs -out mip rescaled byte noshow LW_mip_8bits -stats LW noshow -path current -monitor console 15 | java -jar DeconvolutionLab_2.jar Run -image file simulation.tif -reference file reference.tif -psf synthetic Gaussian 2.0 2.0 2.0 -algorithm LW+ 50 1.5 -out stack noshow LW+ -out mip rescaled byte noshow LW+_mip_8bits -stats LW+ noshow -path current -monitor console 16 | 17 | 18 | -------------------------------------------------------------------------------- /bin/demos/DemoSimulationAndAlgorithms_ImageJMacro.ijm: -------------------------------------------------------------------------------- 1 | /** 2 | * This demo exists in 5 different interfaces: 3 | * - using ImageJ Macro 4 | * - using the command line interface (cshell) 5 | * - in Java, using the DeconvolutionLab2 as a Java Library 6 | * - in Java, using the command of DeconvolutionLab2 7 | * - in Matlab, calling methods of the class DL2 8 | */ 9 | 10 | path = " -path /Users/sage/Desktop/Demo/ImageJMacro/ "; 11 | image = " -image synthetic CubeSphericalBeads 5.0 0.2 12.0 12.0 size 96 80 64 intensity 128 "; 12 | psf = " -psf synthetic Gaussian 2.0 2.0 2.0 size 96 80 64 "; 13 | 14 | // create the reference image 15 | identity = image + " -algorithm I -out mip reference nosave -out stack reference noshow " + path; 16 | run("DeconvolutionLab2 Run", identity + psf); 17 | waitForUser("Demo", "reference"); 18 | 19 | // create the simulation 20 | simulation = " -image file reference.tif -algorithm SIM 0 0 4 -out mip simulation nosave -out stack simulation noshow " + path; 21 | run("DeconvolutionLab2 Run", simulation + psf) 22 | waitForUser("Demo", "simulation"); 23 | 24 | // test various algorithms 25 | deconv = " -image file simulation.tif -reference file reference.tif "+ path + psf; 26 | run("DeconvolutionLab2 Run", " -algorithm RIF 0.01 " + out("RIF") + deconv); 27 | run("DeconvolutionLab2 Run", " -algorithm RL 50 " + out("RL") + deconv); 28 | run("DeconvolutionLab2 Run", " -algorithm LW 50 1.5 " + out("LW") + deconv); 29 | run("DeconvolutionLab2 Run", " -algorithm LW+ 50 1.5 " + out("LW+") + deconv); 30 | 31 | function out(name) { 32 | return "-out mip @1 nosave " + name + " -out mip rescaled byte noshow " + name + "_mip_8bits -out stack noshow " + name + " -stats noshow " + name + " "; 33 | } -------------------------------------------------------------------------------- /bin/demos/DemoSimulationAndAlgorithms_Matlab.m: -------------------------------------------------------------------------------- 1 | % 2 | % This demo exists in 5 different interfaces: 3 | % - using ImageJ Macro 4 | % - using the command line interface (cshell) 5 | % - in Java, using the DeconvolutionLab2 as a Java Library 6 | % - in Java, using the command of DeconvolutionLab2 7 | % - in Matlab, calling methods of the class DL2 8 | % 9 | function DemoSimulationAndAlgorithms_Matlab 10 | 11 | javaaddpath([matlabroot filesep 'java' filesep 'DeconvolutionLab_2.jar']) 12 | 13 | path = '/Users/sage/Desktop/Demo/Matlab/'; 14 | 15 | psf = DL2.open('synthetic', 'Gaussian 2.0 2.0 2.0 size 64 64 64', path); 16 | 17 | ref = DL2.open('synthetic', 'CubeSphericalBeads 5.0 0.2 12.0 12.0 size 96 80 64 intensity 128', path); 18 | 19 | y = DL2.SIM(ref, psf, 0, 0, 4, ['-out mip simulation nosave -out stack simulation noshow -path ' path]); 20 | 21 | x = DL2.RIF( y, psf, ref, 0.01, [out('RIF') ' -path ' path]); 22 | x = DL2.RL( y, psf, ref, 50, [out('RL') ' -path ' path]); 23 | x = DL2.LW( y, psf, ref, 50, 1.5, [out('LW') ' -path ' path]); 24 | x = DL2.NNLS(y, psf, ref, 50, 1.5, [out('LW+') ' -path ' path]); 25 | 26 | end 27 | 28 | function o = out(name) 29 | o= ['-out mip @1 nosave ' name ' -out mip rescaled byte noshow ' name '_mip_8bits -out stack noshow ' name ' -stats noshow ' name ' ']; 30 | end 31 | -------------------------------------------------------------------------------- /bin/plugins.config: -------------------------------------------------------------------------------- 1 | # Name: DeconvolutionLab 2 2 | 3 | # Daniel Sage 4 | # Biomedical Imaging Group 5 | # Ecole Polytechnique Federale de Lausanne (EPFL), Lausanne, Switzerland 6 | 7 | # Date: 11 July 2016 8 | 9 | Plugins>DeconvolutionLab2, Lab, "DeconvolutionLab2 Lab", DeconvolutionLab2_Lab 10 | Plugins>DeconvolutionLab2, Run, "DeconvolutionLab2 Run", DeconvolutionLab2_Run 11 | Plugins>DeconvolutionLab2, Launch, "DeconvolutionLab2 Launch", DeconvolutionLab2_Launch 12 | Plugins>DeconvolutionLab2, Help, "DeconvolutionLab2 Help", DeconvolutionLab2_Help 13 | -------------------------------------------------------------------------------- /bin/resources/celegans.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Biomedical-Imaging-Group/DeconvolutionLab2/e9af0aba493ba137d70877154648e5583e376a81/bin/resources/celegans.jpg -------------------------------------------------------------------------------- /build.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 |
36 | 37 |
38 |
39 | 40 |
41 | 42 | 43 | 44 |
45 |
46 | 47 |
48 | -------------------------------------------------------------------------------- /dist/DeconvolutionLab2.config: -------------------------------------------------------------------------------- 1 | #DeconvolutionLab2 2 | #DeconvolutionLab2 3 | #Thu Jun 28 10:56:20 CEST 2018 4 | Algorithm.BVLS.iterations=10 5 | Algorithm.BVLS.step=1.0 6 | Algorithm.FISTA.iterations=10 7 | Algorithm.FISTA.reg=0.1 8 | Algorithm.FISTA.scale=3 9 | Algorithm.FISTA.step=1.0 10 | Algorithm.FISTA.wavelets=Haar 11 | Algorithm.ICTM.iterations=10 12 | Algorithm.ICTM.reg=0.1 13 | Algorithm.ICTM.step=1.0 14 | Algorithm.ISTA.iterations=10 15 | Algorithm.ISTA.reg=0.1 16 | Algorithm.ISTA.scale=3 17 | Algorithm.ISTA.step=1.0 18 | Algorithm.ISTA.wavelets=Haar 19 | Algorithm.LW.iterations=10 20 | Algorithm.LW.step=1.0 21 | Algorithm.NNLS.iterations=10 22 | Algorithm.NNLS.step=1.0 23 | Algorithm.RIF.reg=0.1 24 | Algorithm.RL.iterations=10 25 | Algorithm.RLTV.reg=0.1 26 | Algorithm.SIM.gaussian.mean=0.0 27 | Algorithm.SIM.gaussian.stdev=1.0 28 | Algorithm.SIM.poisson=0.0 29 | Algorithm.TM.iterations=10 30 | Algorithm.TM.reg=0.1 31 | Algorithm.TM.step=1.0 32 | Algorithm.TRIF.reg=0.1 33 | Algorithm.VC.iterations=10 34 | Algorithm.VC.step=1.0 35 | Algorithm.algorithm=Regularized Inverse Filter 36 | Controller.constraint=no 37 | Controller.monitor=console table 38 | Controller.residu.enable=false 39 | Controller.residu.value=0.01 40 | Controller.stats=no 41 | Controller.time.enable=false 42 | Controller.time.value=3600 43 | Controller.verbose=log 44 | DeconvolutionLab.MainDialog.location.h=505 45 | DeconvolutionLab.MainDialog.location.w=591 46 | DeconvolutionLab.MainDialog.location.x=0 47 | DeconvolutionLab.MainDialog.location.y=23 48 | Image.image.row0=Cube;synthetic;Cube 10.0 1.0 size 200 100 100 intensity 255.0 ;\u232B 49 | Image.image.selected=Cube;synthetic;Cube 10.0 1.0 size 200 100 100 intensity 255.0 ;\u232B 50 | Language.headless=Run (Headless) 51 | Language.job=Job 52 | Language.language=Command line 53 | Path.current=current 54 | Path.path=/Users/sage/Desktop/workspice/DeconvolutionLab2/dist/ 55 | Preprocessing.apoxy=Uniform 56 | Preprocessing.apoz=Uniform 57 | Preprocessing.extxy=0 58 | Preprocessing.extz=0 59 | Preprocessing.normalization=1 60 | Preprocessing.padxy=None 61 | Preprocessing.padz=None 62 | Resources.epsilon=1E-6 63 | Resources.fft=Fastest 64 | Resources.multithreading=yes 65 | Resources.system=yes 66 | -------------------------------------------------------------------------------- /doc/bilib/component/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | bilib.component (DeconvolutionLab2) 7 | 8 | 9 | 10 | 11 | 12 |

bilib.component

13 |
14 |

Classes

15 | 25 |
26 | 27 | 28 | -------------------------------------------------------------------------------- /doc/bilib/table/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | bilib.table (DeconvolutionLab2) 7 | 8 | 9 | 10 | 11 | 12 |

bilib.table

13 |
14 |

Classes

15 | 19 |
20 | 21 | 22 | -------------------------------------------------------------------------------- /doc/bilib/tools/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | bilib.tools (DeconvolutionLab2) 7 | 8 | 9 | 10 | 11 | 12 |

bilib.tools

13 |
14 |

Classes

15 | 22 |
23 | 24 | 25 | -------------------------------------------------------------------------------- /doc/deconvolution/capsule/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | deconvolution.capsule (DeconvolutionLab2) 7 | 8 | 9 | 10 | 11 | 12 |

deconvolution.capsule

13 |
14 |

Classes

15 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /doc/deconvolution/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | deconvolution (DeconvolutionLab2) 7 | 8 | 9 | 10 | 11 | 12 |

deconvolution

13 |
14 |

Classes

15 | 25 |

Enums

26 | 32 |
33 | 34 | 35 | -------------------------------------------------------------------------------- /doc/deconvolutionlab/dialog/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | deconvolutionlab.dialog (DeconvolutionLab2) 7 | 8 | 9 | 10 | 11 | 12 |

deconvolutionlab.dialog

13 |
14 |

Classes

15 | 21 |
22 | 23 | 24 | -------------------------------------------------------------------------------- /doc/deconvolutionlab/module/dropdownbuttons/gpl/swingcomponents/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | deconvolutionlab.module.dropdownbuttons.gpl.swingcomponents (DeconvolutionLab2) 7 | 8 | 9 | 10 | 11 | 12 |

deconvolutionlab.module.dropdownbuttons.gpl.swingcomponents

13 |
14 |

Interfaces

15 | 18 |

Classes

19 | 22 |
23 | 24 | 25 | -------------------------------------------------------------------------------- /doc/deconvolutionlab/module/dropdownbuttons/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | deconvolutionlab.module.dropdownbuttons (DeconvolutionLab2) 7 | 8 | 9 | 10 | 11 | 12 |

deconvolutionlab.module.dropdownbuttons

13 |
14 |

Classes

15 | 21 |
22 | 23 | 24 | -------------------------------------------------------------------------------- /doc/deconvolutionlab/monitor/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | deconvolutionlab.monitor (DeconvolutionLab2) 7 | 8 | 9 | 10 | 11 | 12 |

deconvolutionlab.monitor

13 |
14 |

Interfaces

15 | 18 |

Classes

19 | 27 |

Enums

28 | 31 |
32 | 33 | 34 | -------------------------------------------------------------------------------- /doc/deconvolutionlab/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | deconvolutionlab (DeconvolutionLab2) 7 | 8 | 9 | 10 | 11 | 12 |

deconvolutionlab

13 |
14 |

Classes

15 | 23 |

Enums

24 | 28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /doc/deconvolutionlab/system/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | deconvolutionlab.system (DeconvolutionLab2) 7 | 8 | 9 | 10 | 11 | 12 |

deconvolutionlab.system

13 |
14 |

Classes

15 | 27 |
28 | 29 | 30 | -------------------------------------------------------------------------------- /doc/demos/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | demos (DeconvolutionLab2) 7 | 8 | 9 | 10 | 11 | 12 |

demos

13 |
14 |

Classes

15 | 19 |
20 | 21 | 22 | -------------------------------------------------------------------------------- /doc/imagej/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | imagej (DeconvolutionLab2) 7 | 8 | 9 | 10 | 11 | 12 |

imagej

13 |
14 |

Classes

15 | 19 |
20 | 21 | 22 | -------------------------------------------------------------------------------- /doc/matlab/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | matlab (DeconvolutionLab2) 7 | 8 | 9 | 10 | 11 | 12 |

matlab

13 |
14 |

Classes

15 | 18 |
19 | 20 | 21 | -------------------------------------------------------------------------------- /doc/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | <Unnamed> (DeconvolutionLab2) 7 | 8 | 9 | 10 | 11 | 12 |

<Unnamed>

13 |
14 |

Classes

15 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /doc/package-list: -------------------------------------------------------------------------------- 1 | 2 | bilib.component 3 | bilib.table 4 | bilib.tools 5 | deconvolution 6 | deconvolution.algorithm 7 | deconvolution.capsule 8 | deconvolutionlab 9 | deconvolutionlab.dialog 10 | deconvolutionlab.module 11 | deconvolutionlab.module.dropdownbuttons 12 | deconvolutionlab.module.dropdownbuttons.gpl.swingcomponents 13 | deconvolutionlab.monitor 14 | deconvolutionlab.output 15 | deconvolutionlab.system 16 | demos 17 | imagej 18 | matlab 19 | plugins.sage.deconvolutionlab 20 | resources 21 | signal 22 | signal.apodization 23 | signal.factory 24 | signal.factory.complex 25 | signal.padding 26 | signal.range 27 | wavelets 28 | wavelets.haar 29 | wavelets.spline 30 | -------------------------------------------------------------------------------- /doc/plugins/sage/deconvolutionlab/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | plugins.sage.deconvolutionlab (DeconvolutionLab2) 7 | 8 | 9 | 10 | 11 | 12 |

plugins.sage.deconvolutionlab

13 |
14 |

Classes

15 | 21 |
22 | 23 | 24 | -------------------------------------------------------------------------------- /doc/resources/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | resources (DeconvolutionLab2) 7 | 8 | 9 | 10 | 11 | 12 |

resources

13 |
14 |

Classes

15 | 18 |
19 | 20 | 21 | -------------------------------------------------------------------------------- /doc/script.js: -------------------------------------------------------------------------------- 1 | function show(type) 2 | { 3 | count = 0; 4 | for (var key in methods) { 5 | var row = document.getElementById(key); 6 | if ((methods[key] & type) != 0) { 7 | row.style.display = ''; 8 | row.className = (count++ % 2) ? rowColor : altColor; 9 | } 10 | else 11 | row.style.display = 'none'; 12 | } 13 | updateTabs(type); 14 | } 15 | 16 | function updateTabs(type) 17 | { 18 | for (var value in tabs) { 19 | var sNode = document.getElementById(tabs[value][0]); 20 | var spanNode = sNode.firstChild; 21 | if (value == type) { 22 | sNode.className = activeTableTab; 23 | spanNode.innerHTML = tabs[value][1]; 24 | } 25 | else { 26 | sNode.className = tableTab; 27 | spanNode.innerHTML = "" + tabs[value][1] + ""; 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /doc/signal/apodization/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | signal.apodization (DeconvolutionLab2) 7 | 8 | 9 | 10 | 11 | 12 |

signal.apodization

13 |
14 |

Classes

15 | 25 |
26 | 27 | 28 | -------------------------------------------------------------------------------- /doc/signal/factory/complex/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | signal.factory.complex (DeconvolutionLab2) 7 | 8 | 9 | 10 | 11 | 12 |

signal.factory.complex

13 |
14 |

Classes

15 | 18 |
19 | 20 | 21 | -------------------------------------------------------------------------------- /doc/signal/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | signal (DeconvolutionLab2) 7 | 8 | 9 | 10 | 11 | 12 |

signal

13 |
14 |

Interfaces

15 | 18 |

Classes

19 | 28 |

Enums

29 | 33 |
34 | 35 | 36 | -------------------------------------------------------------------------------- /doc/signal/padding/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | signal.padding (DeconvolutionLab2) 7 | 8 | 9 | 10 | 11 | 12 |

signal.padding

13 |
14 |

Classes

15 | 27 |
28 | 29 | 30 | -------------------------------------------------------------------------------- /doc/signal/range/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | signal.range (DeconvolutionLab2) 7 | 8 | 9 | 10 | 11 | 12 |

signal.range

13 |
14 |

Classes

15 | 23 |
24 | 25 | 26 | -------------------------------------------------------------------------------- /doc/wavelets/haar/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | wavelets.haar (DeconvolutionLab2) 7 | 8 | 9 | 10 | 11 | 12 |

wavelets.haar

13 |
14 |

Classes

15 | 18 |
19 | 20 | 21 | -------------------------------------------------------------------------------- /doc/wavelets/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | wavelets (DeconvolutionLab2) 7 | 8 | 9 | 10 | 11 | 12 |

wavelets

13 |
14 |

Classes

15 | 19 |
20 | 21 | 22 | -------------------------------------------------------------------------------- /doc/wavelets/spline/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | wavelets.spline (DeconvolutionLab2) 7 | 8 | 9 | 10 | 11 | 12 |

wavelets.spline

13 |
14 |

Classes

15 | 22 |
23 | 24 | 25 | -------------------------------------------------------------------------------- /src/main/java/DeconvolutionLab2_Help.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | import deconvolutionlab.Lab; 33 | import deconvolutionlab.Platform; 34 | import ij.plugin.PlugIn; 35 | 36 | /** 37 | * This class only opens the current browser on the webpage of the Deconvolutionlab2 38 | * documentation. 39 | * 40 | * @author Daniel Sage 41 | * 42 | */ 43 | public class DeconvolutionLab2_Help implements PlugIn { 44 | 45 | public static void main(String arg[]) { 46 | new DeconvolutionLab2_Help().run(""); 47 | } 48 | 49 | @Override 50 | public void run(String arg) { 51 | Lab.init(Platform.IMAGEJ); 52 | Lab.help(); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/main/java/DeconvolutionLab2_Lab.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | import java.io.File; 33 | 34 | import deconvolutionlab.Lab; 35 | import deconvolutionlab.LabDialog; 36 | import deconvolutionlab.Platform; 37 | import ij.IJ; 38 | import ij.plugin.PlugIn; 39 | 40 | public class DeconvolutionLab2_Lab implements PlugIn { 41 | 42 | @Override 43 | public void run(String arg) { 44 | Lab.init(Platform.IMAGEJ, IJ.getDirectory("plugins") + File.separator + "DeconvolutionLab2.config"); 45 | LabDialog dlg = new LabDialog(); 46 | Lab.setVisible(dlg, false); 47 | } 48 | 49 | public static void main(String arg[]) { 50 | new DeconvolutionLab2_Lab().run(""); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/main/java/DeconvolutionLab2_Launch.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | import java.io.File; 33 | 34 | import deconvolution.Deconvolution; 35 | import deconvolutionlab.Lab; 36 | import deconvolutionlab.LabDialog; 37 | import deconvolutionlab.Platform; 38 | import ij.IJ; 39 | import ij.Macro; 40 | import ij.plugin.PlugIn; 41 | 42 | public class DeconvolutionLab2_Launch implements PlugIn { 43 | 44 | @Override 45 | public void run(String arg) { 46 | Lab.init(Platform.IMAGEJ, IJ.getDirectory("plugins") + File.separator + "DeconvolutionLab2.config"); 47 | if (Macro.getOptions() == null) { 48 | LabDialog dlg = new LabDialog(); 49 | Lab.setVisible(dlg, false); 50 | } 51 | else 52 | new Deconvolution("Macro", Macro.getOptions()).launch(); 53 | } 54 | 55 | public static void main(String arg[]) { 56 | new DeconvolutionLab2_Launch().run(""); 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/main/java/DeconvolutionLab2_Resources.java: -------------------------------------------------------------------------------- 1 | import deconvolutionlab.Lab; 2 | import deconvolutionlab.Platform; 3 | import deconvolutionlab.system.SystemInfo; 4 | import ij.plugin.PlugIn; 5 | 6 | /* 7 | * DeconvolutionLab2 8 | * 9 | * Conditions of use: You are free to use this software for research or 10 | * educational purposes. In addition, we expect you to include adequate 11 | * citations and acknowledgments whenever you present or publish results that 12 | * are based on it. 13 | * 14 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 15 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 16 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 17 | */ 18 | 19 | /* 20 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 21 | * 22 | * This file is part of DeconvolutionLab2 (DL2). 23 | * 24 | * DL2 is free software: you can redistribute it and/or modify it under the 25 | * terms of the GNU General Public License as published by the Free Software 26 | * Foundation, either version 3 of the License, or (at your option) any later 27 | * version. 28 | * 29 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 30 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 31 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 32 | * 33 | * You should have received a copy of the GNU General Public License along with 34 | * DL2. If not, see . 35 | */ 36 | 37 | /** 38 | * This class only opens the resources panel of the Deconvolutionlab2. 39 | * 40 | * @author Daniel Sage 41 | * 42 | */ 43 | public class DeconvolutionLab2_Resources implements PlugIn { 44 | 45 | public static void main(String arg[]) { 46 | new DeconvolutionLab2_Resources().run(""); 47 | } 48 | 49 | @Override 50 | public void run(String arg) { 51 | Lab.init(Platform.IMAGEJ); 52 | SystemInfo.activate(); 53 | } 54 | } 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /src/main/java/DeconvolutionLab2_Run.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | import java.io.File; 33 | 34 | import deconvolution.Deconvolution; 35 | import deconvolutionlab.Lab; 36 | import deconvolutionlab.LabDialog; 37 | import deconvolutionlab.Platform; 38 | import ij.IJ; 39 | import ij.Macro; 40 | import ij.plugin.PlugIn; 41 | 42 | public class DeconvolutionLab2_Run implements PlugIn { 43 | 44 | @Override 45 | public void run(String arg) { 46 | Lab.init(Platform.IMAGEJ, IJ.getDirectory("plugins") + File.separator + "DeconvolutionLab2.config"); 47 | if (Macro.getOptions() == null) { 48 | LabDialog dlg = new LabDialog(); 49 | Lab.setVisible(dlg, false); 50 | } 51 | else 52 | new Deconvolution("Run", Macro.getOptions()).deconvolve(); 53 | } 54 | 55 | public static void main(String arg[]) { 56 | new DeconvolutionLab2_Run().run(""); 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/main/java/bilib/component/BorderToggledButton.java: -------------------------------------------------------------------------------- 1 | /* 2 | * bilib --- Java Bioimaging Library --- 3 | * 4 | * Author: Daniel Sage, Biomedical Imaging Group, EPFL, Lausanne, Switzerland 5 | * 6 | * Conditions of use: You are free to use this software for research or 7 | * educational purposes. In addition, we expect you to include adequate 8 | * citations and acknowledgments whenever you present or publish results that 9 | * are based on it. 10 | */ 11 | 12 | /* 13 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 14 | * 15 | * This file is part of DeconvolutionLab2 (DL2). 16 | * 17 | * DL2 is free software: you can redistribute it and/or modify it under the 18 | * terms of the GNU General Public License as published by the Free Software 19 | * Foundation, either version 3 of the License, or (at your option) any later 20 | * version. 21 | * 22 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 23 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 24 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 25 | * 26 | * You should have received a copy of the GNU General Public License along with 27 | * DL2. If not, see . 28 | */ 29 | 30 | package bilib.component; 31 | 32 | import java.awt.Insets; 33 | 34 | import javax.swing.JButton; 35 | 36 | public class BorderToggledButton extends JButton { 37 | 38 | private String text = ""; 39 | public BorderToggledButton(String text) { 40 | super(text); 41 | this.text = text; 42 | setMargin(new Insets(1, 1, 1, 1)); 43 | } 44 | 45 | @Override 46 | public void setSelected(boolean selected) { 47 | if (selected) 48 | setText("" + text + ""); 49 | else 50 | setText(text); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/main/java/bilib/component/PanelImage.java: -------------------------------------------------------------------------------- 1 | /* 2 | * bilib --- Java Bioimaging Library --- 3 | * 4 | * Author: Daniel Sage, Biomedical Imaging Group, EPFL, Lausanne, Switzerland 5 | * 6 | * Conditions of use: You are free to use this software for research or 7 | * educational purposes. In addition, we expect you to include adequate 8 | * citations and acknowledgments whenever you present or publish results that 9 | * are based on it. 10 | */ 11 | 12 | /* 13 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 14 | * 15 | * This file is part of DeconvolutionLab2 (DL2). 16 | * 17 | * DL2 is free software: you can redistribute it and/or modify it under the 18 | * terms of the GNU General Public License as published by the Free Software 19 | * Foundation, either version 3 of the License, or (at your option) any later 20 | * version. 21 | * 22 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 23 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 24 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 25 | * 26 | * You should have received a copy of the GNU General Public License along with 27 | * DL2. If not, see . 28 | */ 29 | 30 | package bilib.component; 31 | 32 | import java.awt.Color; 33 | import java.awt.Graphics; 34 | import java.awt.Image; 35 | import java.awt.image.BufferedImage; 36 | import javax.swing.JPanel; 37 | 38 | import resources.ImageLoader; 39 | 40 | public class PanelImage extends JPanel { 41 | 42 | private Image image; 43 | private int w = -1; 44 | private int h = -1; 45 | 46 | public PanelImage() { 47 | super(); 48 | } 49 | 50 | public PanelImage(String filename) { 51 | super(); 52 | image = ImageLoader.get(filename); 53 | } 54 | 55 | public PanelImage(int w, int h) { 56 | super(); 57 | image = null; 58 | this.w = w; 59 | this.h = h; 60 | } 61 | 62 | public PanelImage(String filename, int w, int h) { 63 | super(); 64 | image = ImageLoader.get(filename); 65 | this.w = w; 66 | this.h = h; 67 | } 68 | 69 | public void setImage(BufferedImage image) { 70 | this.image = image; 71 | repaint(); 72 | } 73 | 74 | @Override 75 | protected void paintComponent(Graphics g) { 76 | super.paintComponent(g); 77 | if (image != null) { 78 | if (w < 0) 79 | g.drawImage(image, 0, 0, getWidth(), getHeight(), null); 80 | else { 81 | g.setColor(Color.WHITE); 82 | g.fillRect(0, 0, getWidth(), getHeight()); 83 | g.drawImage(image, (getWidth()-w)/2, 0, w, h, null); 84 | } 85 | } 86 | else { 87 | g.setColor(Color.DARK_GRAY); 88 | g.fillRect(0, 0, getWidth(), getHeight()); 89 | } 90 | } 91 | 92 | } 93 | -------------------------------------------------------------------------------- /src/main/java/deconvolution/CommandSegment.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package deconvolution; 33 | 34 | public class CommandSegment implements Comparable { 35 | public String keyword; 36 | public int index = 0; 37 | 38 | public CommandSegment(String keyword, int index) { 39 | this.keyword = keyword; 40 | this.index = index; 41 | } 42 | 43 | @Override 44 | public int compareTo(CommandSegment o) { 45 | return index > o.index ? 1 : -1; 46 | } 47 | 48 | } -------------------------------------------------------------------------------- /src/main/java/deconvolution/Features.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package deconvolution; 33 | 34 | import java.util.ArrayList; 35 | 36 | public class Features extends ArrayList{ 37 | 38 | public Features() { 39 | super(); 40 | } 41 | 42 | public void add(String feature, String value) { 43 | add(new String[] {feature, value}); 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/deconvolution/algorithm/AlgorithmPanel.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package deconvolution.algorithm; 33 | 34 | import javax.swing.JPanel; 35 | 36 | /** 37 | * This is the abstract panel class associated the algorithm. 38 | * 39 | * @author Daniel Sage 40 | * 41 | */ 42 | public abstract class AlgorithmPanel { 43 | 44 | public abstract JPanel getPanelParameters(); 45 | 46 | public abstract String getCommand(); 47 | 48 | public abstract String getName(); 49 | 50 | public abstract String[] getShortnames(); 51 | 52 | public abstract String getDocumentation(); 53 | 54 | public boolean isNamed(String name) { 55 | for(String sn : getShortnames()) { 56 | if (name.equals(sn.toLowerCase())) 57 | return true; 58 | if (name.equals(getName().toLowerCase())) 59 | return true; 60 | } 61 | return false; 62 | } 63 | 64 | } 65 | -------------------------------------------------------------------------------- /src/main/java/deconvolution/algorithm/Constraint.java: -------------------------------------------------------------------------------- 1 | package deconvolution.algorithm; 2 | 3 | public enum Constraint { 4 | NO, NONNEGATIVE, CLIPPED, RESCALED, NORMALIZED; 5 | 6 | public static String[] getContraintsAsArray() { 7 | return new String[] {"no", "nonnegativity", "clipped"}; 8 | } 9 | 10 | public static Constraint getByName(String c) { 11 | if (c.toLowerCase().equalsIgnoreCase("nonnegativity")) 12 | return Constraint.NONNEGATIVE; 13 | if (c.toLowerCase().equalsIgnoreCase("clipped")) 14 | return Constraint.CLIPPED; 15 | return Constraint.NO; 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/deconvolution/algorithm/ConvolutionPanel.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package deconvolution.algorithm; 33 | 34 | import javax.swing.JPanel; 35 | 36 | import bilib.component.GridPanel; 37 | 38 | public class ConvolutionPanel extends AlgorithmPanel { 39 | 40 | private Convolution algo = new Convolution(); 41 | 42 | @Override 43 | public JPanel getPanelParameters() { 44 | GridPanel pn = new GridPanel(false); 45 | pn.place(1, 0, "No parameters"); 46 | return pn; 47 | } 48 | 49 | @Override 50 | public String getCommand() { 51 | return ""; 52 | } 53 | 54 | @Override 55 | public String getName() { 56 | return algo.getName(); 57 | } 58 | 59 | @Override 60 | public String[] getShortnames() { 61 | return algo.getShortnames(); 62 | } 63 | 64 | @Override 65 | public String getDocumentation() { 66 | String s = ""; 67 | s += "

" + getName(); 68 | s += " [CONV]

"; 69 | s += "

This algorithm is only used for simulation. It make a pure convolution of the input image with the PSF in the Fourier domain.

"; 70 | return s; 71 | } 72 | 73 | } 74 | -------------------------------------------------------------------------------- /src/main/java/deconvolution/algorithm/IdentityPanel.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package deconvolution.algorithm; 33 | 34 | import javax.swing.JPanel; 35 | 36 | import bilib.component.GridPanel; 37 | 38 | public class IdentityPanel extends AlgorithmPanel { 39 | 40 | private Identity algo = new Identity(); 41 | 42 | @Override 43 | public JPanel getPanelParameters() { 44 | GridPanel pn = new GridPanel(false); 45 | pn.place(1, 0, "No parameters"); 46 | return pn; 47 | } 48 | 49 | @Override 50 | public String getCommand() { 51 | return ""; 52 | } 53 | 54 | @Override 55 | public String getName() { 56 | return algo.getName(); 57 | } 58 | 59 | @Override 60 | public String[] getShortnames() { 61 | return algo.getShortnames(); 62 | } 63 | 64 | @Override 65 | public String getDocumentation() { 66 | String s = ""; 67 | s += "

" + getName(); 68 | s += " [I]

"; 69 | s += "

This algorithm does nothing. It returns a copy of the input image.

"; 70 | return s; 71 | } 72 | 73 | } 74 | -------------------------------------------------------------------------------- /src/main/java/deconvolution/algorithm/NonStabilizedDivisionPanel.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package deconvolution.algorithm; 33 | 34 | import javax.swing.JPanel; 35 | 36 | import bilib.component.GridPanel; 37 | 38 | public class NonStabilizedDivisionPanel extends AlgorithmPanel { 39 | 40 | private NonStabilizedDivision algo = new NonStabilizedDivision(); 41 | 42 | @Override 43 | public JPanel getPanelParameters() { 44 | GridPanel pn = new GridPanel(false); 45 | pn.place(1, 0, "No parameters"); 46 | return pn; 47 | } 48 | 49 | @Override 50 | public String getCommand() { 51 | return ""; 52 | } 53 | 54 | @Override 55 | public String getName() { 56 | return algo.getName(); 57 | } 58 | 59 | @Override 60 | public String[] getShortnames() { 61 | return algo.getShortnames(); 62 | } 63 | 64 | @Override 65 | public String getDocumentation() { 66 | String s = ""; 67 | s += "

" + getName() ; 68 | s += " [DIV]

"; 69 | s += "

It makes a division in the Fourier domain. Not stabilization is applied."; 70 | return s; 71 | } 72 | 73 | } 74 | -------------------------------------------------------------------------------- /src/main/java/deconvolutionlab/Constants.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package deconvolutionlab; 33 | 34 | import java.awt.Dimension; 35 | 36 | public class Constants { 37 | 38 | public static String name = "DeconvolutionLab2"; 39 | public static String copyright = "\u00A9 2010-2018. Biomedical Imaging Group, EPFL."; 40 | 41 | public static String url = "http://bigwww.epfl.ch/deconvolution/"; 42 | public static String reference = 43 | "
D. Sage, L. Donati, F. Soulez, D. Fortun, A. Seitz, R. Guiet, C. Vonesch, M. Unser
" + 44 | "DeconvolutionLab2 : An open-source software for deconvolution microscopy
" + 45 | "Methods-Image Processing for Biologists, vol. 115, 2017."; 46 | 47 | public static String version = "2.1.2 (27.06.2018)"; 48 | 49 | public static String authors = 50 | "Daniel Sage, " + 51 | "Cédric Vonesch, " + 52 | "Guillaume Schmit, " + 53 | "Pierre Besson, " + 54 | "Raquel Terrés Cristofani, " + 55 | "Alessandra Griffa"; 56 | 57 | public static String help = 58 | "

" + name + "

" + 59 | "

" + version + "

"; 60 | 61 | public static int widthGUI = 600; 62 | public static Dimension dimParameters = new Dimension(88, 25); 63 | public static int widthLaunchGUI = 480; 64 | public static int heightLaunchGUI = 360; 65 | 66 | } 67 | -------------------------------------------------------------------------------- /src/main/java/deconvolutionlab/Platform.java: -------------------------------------------------------------------------------- 1 | package deconvolutionlab; 2 | 3 | public enum Platform {IMAGEJ, ICY, STANDALONE, MATLAB} 4 | -------------------------------------------------------------------------------- /src/main/java/deconvolutionlab/module/AboutModule.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package deconvolutionlab.module; 33 | 34 | import java.awt.BorderLayout; 35 | 36 | import javax.swing.JPanel; 37 | 38 | import bilib.component.HTMLPane; 39 | import deconvolutionlab.Constants; 40 | 41 | public class AboutModule extends AbstractModule { 42 | 43 | public AboutModule() { 44 | create("About"); 45 | } 46 | 47 | @Override 48 | public String getCommand() { 49 | setSynopsis("DeconvolutionLab2 " + Constants.version); 50 | return "DeconvolutionLab2 " + Constants.version; 51 | } 52 | 53 | @Override 54 | public JPanel buildExpandedPanel() { 55 | JPanel panel = new JPanel(new BorderLayout()); 56 | HTMLPane html = new HTMLPane("verdana", 200, 200); 57 | html.append("h1", "DeconvolutionLab2 " + Constants.version); 58 | html.append("p", Constants.copyright); 59 | html.append("p", "Reference: " + Constants.reference); 60 | html.append("h3", "Authors: " + Constants.authors); 61 | panel.add(html.getPane(), BorderLayout.CENTER); 62 | setSynopsis("DeconvolutionLab2 " + Constants.version); 63 | return panel; 64 | } 65 | 66 | @Override 67 | public void close() { 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /src/main/java/deconvolutionlab/module/dropdownbuttons/AbstractDropDownButton.java: -------------------------------------------------------------------------------- 1 | package deconvolutionlab.module.dropdownbuttons; 2 | 3 | import deconvolutionlab.module.dropdownbuttons.gpl.swingcomponents.JSplitButton; 4 | 5 | public class AbstractDropDownButton extends JSplitButton { 6 | 7 | protected String moduleName = ""; 8 | 9 | public AbstractDropDownButton(String moduleName, String text, boolean hidePopupOnText) { 10 | super(text, hidePopupOnText); 11 | this.moduleName = moduleName; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/deconvolutionlab/module/dropdownbuttons/gpl/swingcomponents/SplitButtonActionListener.java: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | * Copyright (C) 2011 Naveed Quadri 4 | * naveedmurtuza@gmail.com 5 | * www.naveedmurtuza.blogspot.com 6 | * 7 | * This program is free software; you can redistribute it and/or 8 | * modify it under the terms of the GNU Lesser General Public License 9 | * as published by the Free Software Foundation; either version 2 10 | * of the License, or (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU Lesser General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU Lesser General Public License 18 | * along with this program; if not, write to the Free Software 19 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 20 | */ 21 | package deconvolutionlab.module.dropdownbuttons.gpl.swingcomponents; 22 | 23 | import java.awt.event.ActionEvent; 24 | import java.util.EventListener; 25 | 26 | /** 27 | * The listener interface for receiving action events. 28 | * The class that is interested in processing an action event 29 | * implements this interface, and the object created with that 30 | * class is registered with a component, using the component's 31 | * addSplitButtonActionListener method. When the action event 32 | * occurs, that object's buttonClicked or splitButtonClicked 33 | * method is invoked. 34 | * 35 | * @see ActionEvent 36 | * 37 | * @author Naveed Quadri 38 | */ 39 | public interface SplitButtonActionListener extends EventListener { 40 | 41 | /** 42 | * Invoked when the button part is clicked. 43 | */ 44 | public void buttonClicked(ActionEvent e); 45 | 46 | /** 47 | * Invoked when split part is clicked. 48 | */ 49 | public void splitButtonClicked(ActionEvent e); 50 | 51 | } 52 | -------------------------------------------------------------------------------- /src/main/java/deconvolutionlab/monitor/AbstractMonitor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package deconvolutionlab.monitor; 33 | 34 | public interface AbstractMonitor { 35 | 36 | public abstract void clear(); 37 | public abstract void add(Message message); 38 | public abstract String getName(); 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/deconvolutionlab/monitor/ConsoleMonitor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package deconvolutionlab.monitor; 33 | 34 | public class ConsoleMonitor implements AbstractMonitor { 35 | 36 | @Override 37 | public void clear() { 38 | System.out.println("\n"); 39 | } 40 | 41 | @Override 42 | public void add(Message message) { 43 | System.out.println(message.formatTab()); 44 | } 45 | 46 | @Override 47 | public String getName() { 48 | return "console"; 49 | } 50 | 51 | } 52 | -------------------------------------------------------------------------------- /src/main/java/deconvolutionlab/monitor/Verbose.java: -------------------------------------------------------------------------------- 1 | package deconvolutionlab.monitor; 2 | 3 | public enum Verbose { 4 | Mute, Quiet, Log, Prolix, Progress; 5 | 6 | public static Verbose getByName(String name) { 7 | String n = name.toLowerCase().trim(); 8 | if (n.equals("log")) 9 | return Log; 10 | if (n.equals("prolix")) 11 | return Log; 12 | if (n.equals("quiet")) 13 | return Quiet; 14 | if (n.equals("mute")) 15 | return Mute; 16 | if (n.equals("progress")) 17 | return Progress; 18 | return Log; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/deconvolutionlab/output/OutFigure.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package deconvolutionlab.output; 33 | 34 | public class OutFigure extends Output { 35 | 36 | public OutFigure(String name) { 37 | super(View.FIGURE, name); 38 | setAction(Action.SHOWSAVE); 39 | } 40 | 41 | public OutFigure(String path, String name) { 42 | super(View.FIGURE, name); 43 | setAction(Action.SHOWSAVE); 44 | setPath(path); 45 | } 46 | } -------------------------------------------------------------------------------- /src/main/java/deconvolutionlab/output/OutMIP.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package deconvolutionlab.output; 33 | 34 | public class OutMIP extends Output { 35 | 36 | public OutMIP(String name) { 37 | super(View.MIP, name); 38 | setAction(Action.SHOWSAVE); 39 | } 40 | 41 | public OutMIP(String path, String name) { 42 | super(View.MIP, name); 43 | setAction(Action.SHOWSAVE); 44 | setPath(path); 45 | } 46 | } -------------------------------------------------------------------------------- /src/main/java/deconvolutionlab/output/OutOrtho.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package deconvolutionlab.output; 33 | 34 | public class OutOrtho extends Output { 35 | 36 | public OutOrtho(String name) { 37 | super(View.ORTHO, name); 38 | setAction(Action.SHOWSAVE); 39 | } 40 | 41 | public OutOrtho(String path, String name) { 42 | super(View.ORTHO, name); 43 | setPath(path); 44 | setAction(Action.SHOWSAVE); 45 | } 46 | } -------------------------------------------------------------------------------- /src/main/java/deconvolutionlab/output/OutPlanar.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package deconvolutionlab.output; 33 | 34 | public class OutPlanar extends Output { 35 | 36 | public OutPlanar(String name) { 37 | super(View.PLANAR, name); 38 | setAction(Action.SHOWSAVE); 39 | } 40 | 41 | public OutPlanar(String path, String name) { 42 | super(View.PLANAR, name); 43 | setAction(Action.SHOWSAVE); 44 | setPath(path); 45 | } 46 | } -------------------------------------------------------------------------------- /src/main/java/deconvolutionlab/output/OutSeries.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package deconvolutionlab.output; 33 | 34 | public class OutSeries extends Output { 35 | 36 | public OutSeries(String name) { 37 | super(View.SERIES, name); 38 | setAction(Action.SHOWSAVE); 39 | } 40 | 41 | public OutSeries(String path, String name) { 42 | super(View.SERIES, name); 43 | setAction(Action.SHOWSAVE); 44 | setPath(path); 45 | } 46 | } -------------------------------------------------------------------------------- /src/main/java/deconvolutionlab/output/OutStack.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package deconvolutionlab.output; 33 | 34 | public class OutStack extends Output { 35 | 36 | public OutStack(String name) { 37 | super(View.STACK, name); 38 | setAction(Action.SHOWSAVE); 39 | } 40 | 41 | public OutStack(String path, String name) { 42 | super(View.STACK, name); 43 | setPath(path); 44 | setAction(Action.SHOWSAVE); 45 | } 46 | } -------------------------------------------------------------------------------- /src/main/java/deconvolutionlab/output/SaveFigure.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package deconvolutionlab.output; 33 | 34 | public class SaveFigure extends Output { 35 | 36 | public SaveFigure(String path, String name) { 37 | super(View.FIGURE, name); 38 | setAction(Action.SAVE); 39 | setPath(path); 40 | } 41 | 42 | public SaveFigure(String name) { 43 | super(View.FIGURE, name); 44 | setAction(Action.SAVE); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/deconvolutionlab/output/SaveMIP.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package deconvolutionlab.output; 33 | 34 | public class SaveMIP extends Output { 35 | 36 | public SaveMIP(String path, String name) { 37 | super(View.MIP, name); 38 | setAction(Action.SAVE); 39 | setPath(path); 40 | } 41 | 42 | public SaveMIP(String name) { 43 | super(View.MIP, name); 44 | setAction(Action.SAVE); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/deconvolutionlab/output/SaveOrtho.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package deconvolutionlab.output; 33 | 34 | public class SaveOrtho extends Output { 35 | 36 | public SaveOrtho(String path, String name) { 37 | super(View.ORTHO, name); 38 | setAction(Action.SAVE); 39 | setPath(path); 40 | } 41 | 42 | public SaveOrtho(String name) { 43 | super(View.ORTHO, name); 44 | setAction(Action.SAVE); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/deconvolutionlab/output/SavePlanar.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package deconvolutionlab.output; 33 | 34 | public class SavePlanar extends Output { 35 | 36 | public SavePlanar(String path, String name) { 37 | super(View.PLANAR, name); 38 | setAction(Action.SAVE); 39 | setPath(path); 40 | } 41 | 42 | public SavePlanar(String name) { 43 | super(View.PLANAR, name); 44 | setAction(Action.SAVE); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/deconvolutionlab/output/SaveSeries.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package deconvolutionlab.output; 33 | 34 | public class SaveSeries extends Output { 35 | 36 | public SaveSeries(String path, String name) { 37 | super(View.SERIES, name); 38 | setAction(Action.SAVE); 39 | setPath(path); 40 | } 41 | 42 | public SaveSeries(String name) { 43 | super(View.SERIES, name); 44 | setAction(Action.SAVE); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/deconvolutionlab/output/SaveStack.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package deconvolutionlab.output; 33 | 34 | public class SaveStack extends Output { 35 | 36 | public SaveStack(String path, String name) { 37 | super(View.STACK, name); 38 | setAction(Action.SAVE); 39 | setPath(path); 40 | } 41 | 42 | public SaveStack(String name) { 43 | super(View.STACK, name); 44 | setAction(Action.SAVE); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/deconvolutionlab/output/ShowFigure.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package deconvolutionlab.output; 33 | 34 | public class ShowFigure extends Output { 35 | 36 | public ShowFigure(String name) { 37 | super(View.FIGURE, name); 38 | setAction(Action.SHOW); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/deconvolutionlab/output/ShowMIP.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package deconvolutionlab.output; 33 | 34 | public class ShowMIP extends Output { 35 | 36 | public ShowMIP(String name) { 37 | super(View.MIP, name); 38 | setAction(Action.SHOW); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/deconvolutionlab/output/ShowOrtho.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package deconvolutionlab.output; 33 | 34 | public class ShowOrtho extends Output { 35 | 36 | public ShowOrtho(String name) { 37 | super(View.ORTHO, name); 38 | setAction(Action.SHOW); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/deconvolutionlab/output/ShowPlanar.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package deconvolutionlab.output; 33 | 34 | public class ShowPlanar extends Output { 35 | 36 | public ShowPlanar(String name) { 37 | super(View.PLANAR, name); 38 | setAction(Action.SHOW); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/deconvolutionlab/output/ShowSeries.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package deconvolutionlab.output; 33 | 34 | public class ShowSeries extends Output { 35 | 36 | public ShowSeries(String name) { 37 | super(View.SERIES, name); 38 | setAction(Action.SHOW); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/deconvolutionlab/output/ShowStack.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package deconvolutionlab.output; 33 | 34 | public class ShowStack extends Output { 35 | 36 | public ShowStack(String name) { 37 | super(View.STACK, name); 38 | setAction(Action.SHOW); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/deconvolutionlab/system/FFTMeter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package deconvolutionlab.system; 33 | 34 | import java.awt.Graphics; 35 | import fft.FFT; 36 | 37 | public class FFTMeter extends AbstractMeter { 38 | 39 | public FFTMeter(int width) { 40 | super(width); 41 | } 42 | 43 | @Override 44 | public void paintComponent(Graphics g) { 45 | super.paintComponent(g); 46 | g.setColor(colorText); 47 | g.drawString(prefix + FFT.getFastestFFT().getLibraryName(), 10, 17); 48 | } 49 | 50 | @Override 51 | public void update() { 52 | repaint(); 53 | } 54 | 55 | @Override 56 | public String getMeterName() { 57 | return "FFT"; 58 | } 59 | 60 | @Override 61 | public void setDetail() { 62 | } 63 | } -------------------------------------------------------------------------------- /src/main/java/deconvolutionlab/system/SignalMeter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package deconvolutionlab.system; 33 | 34 | import java.awt.Graphics; 35 | 36 | import signal.SignalCollector; 37 | 38 | public class SignalMeter extends AbstractMeter { 39 | 40 | public SignalMeter(int width) { 41 | super(width); 42 | } 43 | 44 | @Override 45 | public void paintComponent(Graphics g) { 46 | g.setColor(colorText); 47 | g.drawString(prefix + SignalCollector.sumarize(), 10, 17); 48 | } 49 | 50 | @Override 51 | public void update() { 52 | repaint(); 53 | } 54 | 55 | @Override 56 | public String getMeterName() { 57 | return "Signals"; 58 | } 59 | 60 | @Override 61 | public void setDetail() { 62 | 63 | } 64 | } -------------------------------------------------------------------------------- /src/main/java/fft/AbstractFFTLibrary.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package fft; 33 | 34 | import java.util.ArrayList; 35 | 36 | public abstract class AbstractFFTLibrary { 37 | 38 | protected boolean installed = false; 39 | protected ArrayList ffts = new ArrayList(); 40 | 41 | public abstract AbstractFFT getDefaultFFT(); 42 | 43 | public abstract String getLibraryName(); 44 | public abstract String getCredit(); 45 | public abstract String getLicence(); 46 | public abstract String getLocation(); 47 | 48 | public boolean isInstalled() { 49 | return installed; 50 | } 51 | 52 | public ArrayList getFFTs() { 53 | return ffts; 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/main/java/fft/FFTPanel.java: -------------------------------------------------------------------------------- 1 | package fft; 2 | 3 | import java.awt.BorderLayout; 4 | import java.awt.event.MouseEvent; 5 | import java.awt.event.MouseListener; 6 | import java.util.ArrayList; 7 | 8 | import javax.swing.JPanel; 9 | import javax.swing.JSplitPane; 10 | 11 | import bilib.component.HTMLPane; 12 | import bilib.table.CustomizedColumn; 13 | import bilib.table.CustomizedTable; 14 | import deconvolutionlab.Constants; 15 | 16 | public class FFTPanel extends JPanel implements MouseListener { 17 | 18 | private HTMLPane info; 19 | private CustomizedTable table; 20 | private ArrayList libs; 21 | 22 | public FFTPanel(int w, int h) { 23 | super(new BorderLayout()); 24 | ArrayList columns = new ArrayList(); 25 | columns.add(new CustomizedColumn("Name", String.class, 120, false)); 26 | columns.add(new CustomizedColumn("Installed", String.class, 120, false)); 27 | columns.add(new CustomizedColumn("Multithreadable", String.class, 120, false)); 28 | columns.add(new CustomizedColumn("Location", String.class, Constants.widthGUI, false)); 29 | table = new CustomizedTable(columns, true); 30 | table.setRowSelectionAllowed(true); 31 | table.addMouseListener(this); 32 | libs = FFT.getRegisteredLibraries(); 33 | for (AbstractFFTLibrary lib : libs) { 34 | String name = lib.getLibraryName(); 35 | String installed = lib.isInstalled() ? "Yes" : "No"; 36 | String multit = lib.getDefaultFFT().isMultithreadable() ? "Yes" : "No"; 37 | String location = lib.getLocation(); 38 | table.append(new String[] { name, installed, multit, location }); 39 | } 40 | info = new HTMLPane(w, h-100); 41 | 42 | JSplitPane split = new JSplitPane(JSplitPane.VERTICAL_SPLIT, table.getPane(w, 100), info.getPane()); 43 | split.setDividerLocation(0.5); 44 | add(split, BorderLayout.CENTER); 45 | table.setRowSelectionInterval(0, 0); 46 | info.clear(); 47 | info.append("p", libs.get(0).getLicence()); 48 | } 49 | 50 | @Override 51 | public void mouseClicked(MouseEvent e) { 52 | int i = table.getSelectedRow(); 53 | if (i<0) 54 | return; 55 | if (i>=libs.size()) 56 | return; 57 | info.clear(); 58 | info.append("p", libs.get(i).getLicence()); 59 | } 60 | 61 | @Override 62 | public void mousePressed(MouseEvent e) { 63 | } 64 | 65 | @Override 66 | public void mouseReleased(MouseEvent e) { 67 | } 68 | 69 | @Override 70 | public void mouseEntered(MouseEvent e) { 71 | // TODO Auto-generated method stub 72 | } 73 | 74 | @Override 75 | public void mouseExited(MouseEvent e) { 76 | // TODO Auto-generated method stub 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /src/main/java/fft/Separability.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package fft; 33 | 34 | public enum Separability { 35 | XYZ, XY_Z, X_Y_Z; 36 | 37 | public static Separability getDefault() { 38 | return XYZ; 39 | } 40 | 41 | public static Separability getByName(String sep) { 42 | if (sep.toLowerCase().equals("xy_z")) 43 | return XY_Z; 44 | if (sep.toLowerCase().equals("x_y_z")) 45 | return X_Y_Z; 46 | return XYZ; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/fft/academic/Academic.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package fft.academic; 33 | 34 | import deconvolutionlab.monitor.Monitors; 35 | import fft.AbstractFFT; 36 | import fft.Separability; 37 | import signal.ComplexSignal; 38 | import signal.RealSignal; 39 | 40 | public class Academic extends AbstractFFT { 41 | 42 | private AcademicFFT fftXYZ; 43 | 44 | public Academic() { 45 | super(Separability.XYZ); 46 | } 47 | 48 | @Override 49 | public void init(Monitors monitors, int nx, int ny, int nz) { 50 | super.init(monitors, nx, ny, nz); 51 | fftXYZ = new AcademicFFT(nx, ny, nz, 0, 0, 0); 52 | } 53 | 54 | @Override 55 | public void transformInternal(RealSignal x, ComplexSignal X) { 56 | float imag[] = new float[nx * ny * nz]; 57 | float real[] = x.getXYZ(); 58 | fftXYZ.directTransform(real, imag, null, null, AcademicFFT.InputDataType.REALINPUT); 59 | X.setXYZ(real, imag); 60 | } 61 | 62 | @Override 63 | public void inverseInternal(ComplexSignal X, RealSignal x) { 64 | float real[] = X.getRealXYZ(); 65 | float imag[] = X.getImagXYZ(); 66 | fftXYZ.inverseTransform(real, imag, null, null); 67 | x.setXYZ(real); 68 | } 69 | 70 | @Override 71 | public String getName() { 72 | return "AcademicFFT"; 73 | } 74 | 75 | @Override 76 | public boolean isMultithreadable() { 77 | return true; 78 | } 79 | 80 | } 81 | -------------------------------------------------------------------------------- /src/main/java/fft/academic/AcademicLibrary.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package fft.academic; 33 | 34 | import fft.AbstractFFT; 35 | import fft.AbstractFFTLibrary; 36 | 37 | public class AcademicLibrary extends AbstractFFTLibrary { 38 | 39 | public AcademicLibrary() { 40 | installed = true; 41 | if (installed) { 42 | ffts.add(new Academic()); 43 | ffts.add(new AcademicFFT_XYZ()); 44 | ffts.add(new AcademicFFT_XY_Z()); 45 | } 46 | } 47 | 48 | @Override 49 | public String getLocation() { 50 | return AcademicLibrary.class.getCanonicalName(); 51 | } 52 | 53 | @Override 54 | public String getCredit() { 55 | return "http://bigwww.epfl.ch/thevenaz/academicFFT/ (P. Thévenaz)"; 56 | } 57 | 58 | @Override 59 | public String getLicence() { 60 | String licence = "

AcademicFFT of Philippe Thévenaz, EPFL.

"; 61 | licence += "

EPFL makes no warranties of any kind on this software and "; 62 | licence += "shall in no event be liable for damages of any kind in "; 63 | licence += "connection with the use and exploitation of this technology.

"; 64 | return licence; 65 | } 66 | 67 | @Override 68 | public String getLibraryName() { 69 | return "Academic"; 70 | } 71 | 72 | @Override 73 | public AbstractFFT getDefaultFFT() { 74 | return new Academic(); 75 | } 76 | 77 | } 78 | -------------------------------------------------------------------------------- /src/main/java/imagej/IJMonitor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package imagej; 33 | 34 | import deconvolutionlab.monitor.AbstractMonitor; 35 | import deconvolutionlab.monitor.Message; 36 | import ij.IJ; 37 | 38 | public class IJMonitor implements AbstractMonitor { 39 | 40 | @Override 41 | public void clear() { 42 | IJ.log("\n"); 43 | } 44 | 45 | @Override 46 | public void add(Message message) { 47 | IJ.log(message.formatTab()); 48 | } 49 | 50 | @Override 51 | public String getName() { 52 | return "IJ.log"; 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/main/java/plugins/sage/deconvolutionlab/Deconvolutionlab2.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package plugins.sage.deconvolutionlab; 33 | 34 | import bilib.tools.Files; 35 | import deconvolutionlab.Lab; 36 | import deconvolutionlab.Platform; 37 | import icy.plugin.abstract_.PluginActionable; 38 | 39 | public class Deconvolutionlab2 extends PluginActionable { 40 | 41 | @Override 42 | public void run() { 43 | Lab.init(Platform.ICY, Files.getWorkingDirectory() + "DeconvolutionLab2.config"); 44 | new DeconvolutionLabIcyFrame(); 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/plugins/sage/deconvolutionlab/Test.java: -------------------------------------------------------------------------------- 1 | package plugins.sage.deconvolutionlab; 2 | 3 | import bilib.tools.Files; 4 | import deconvolutionlab.Lab; 5 | import deconvolutionlab.Platform; 6 | import deconvolutionlab.dialog.OutputDialog; 7 | import deconvolutionlab.output.Output.View; 8 | import icy.gui.frame.IcyFrame; 9 | import icy.plugin.abstract_.PluginActionable; 10 | 11 | public class Test extends PluginActionable { 12 | 13 | @Override 14 | public void run() { 15 | 16 | Lab.init(Platform.ICY, Files.getWorkingDirectory() + "DeconvolutionLab2.config"); 17 | IcyFrame icf = new IcyFrame(); 18 | icf.add(new OutputDialog(View.FIGURE, 0).getContentPane()); 19 | icf.pack(); 20 | icf.toFront(); 21 | icf.addToDesktopPane(); 22 | icf.setVisible(true); 23 | //icf.setResizable(true); 24 | 25 | 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/resources/ImageLoader.java: -------------------------------------------------------------------------------- 1 | /* 2 | * bilib --- Java Bioimaging Library --- 3 | * 4 | * Author: Daniel Sage, Biomedical Imaging Group, EPFL, Lausanne, Switzerland 5 | * 6 | * Conditions of use: You are free to use this software for research or 7 | * educational purposes. In addition, we expect you to include adequate 8 | * citations and acknowledgments whenever you present or publish results that 9 | * are based on it. 10 | */ 11 | 12 | /* 13 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 14 | * 15 | * This file is part of DeconvolutionLab2 (DL2). 16 | * 17 | * DL2 is free software: you can redistribute it and/or modify it under the 18 | * terms of the GNU General Public License as published by the Free Software 19 | * Foundation, either version 3 of the License, or (at your option) any later 20 | * version. 21 | * 22 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 23 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 24 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 25 | * 26 | * You should have received a copy of the GNU General Public License along with 27 | * DL2. If not, see . 28 | */ 29 | 30 | package resources; 31 | 32 | import java.awt.Image; 33 | import java.net.URL; 34 | 35 | import javax.swing.ImageIcon; 36 | 37 | public class ImageLoader { 38 | 39 | public static Image get(String filename) { 40 | URL url = ImageLoader.class.getResource(filename); 41 | if (url != null) { 42 | ImageIcon img = new ImageIcon(url, "") ; 43 | return img.getImage(); 44 | } 45 | return null; 46 | } 47 | 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/resources/celegans.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Biomedical-Imaging-Group/DeconvolutionLab2/e9af0aba493ba137d70877154648e5583e376a81/src/main/java/resources/celegans.jpg -------------------------------------------------------------------------------- /src/main/java/signal/ComplexComponent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package signal; 33 | 34 | public enum ComplexComponent { 35 | REAL, IMAGINARY, MODULE, DB 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/signal/Signal.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package signal; 33 | 34 | /** 35 | * This class is an abstract class to store a 3D signal in a float array 'data'. 36 | * The data are store in a 2D array, the first index represents the z direction 37 | * and the second store a 2D plane in row-major representation. 38 | * 39 | * There are two implementations of this class: RealSignal to store a real volume 40 | * and ComplexSignal to store a complex signal in interleaving mode. 41 | * 42 | * @author Daniel Sage 43 | * 44 | */ 45 | public class Signal { 46 | 47 | final public int nx; 48 | final public int ny; 49 | final public int nz; 50 | public float data[][]; 51 | public String name = "untitled"; 52 | 53 | public Signal(String name, int nx, int ny, int nz) { 54 | this.name = name; 55 | this.nx = nx; 56 | this.ny = ny; 57 | this.nz = nz; 58 | } 59 | 60 | public Signal setName(String name) { 61 | this.name = name; 62 | return this; 63 | } 64 | 65 | public String dimAsString() { 66 | return nx + "x" + ny + "x" + nz + " "; 67 | } 68 | 69 | } 70 | -------------------------------------------------------------------------------- /src/main/java/signal/SignalListener.java: -------------------------------------------------------------------------------- 1 | package signal; 2 | 3 | public interface SignalListener { 4 | public void notify(String name, double progress); 5 | } 6 | -------------------------------------------------------------------------------- /src/main/java/signal/apodization/AbstractApodization.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package signal.apodization; 33 | 34 | public abstract class AbstractApodization { 35 | 36 | protected double value; 37 | 38 | public AbstractApodization() { 39 | } 40 | 41 | public AbstractApodization(double value) { 42 | this.value = value; 43 | } 44 | 45 | public abstract float apodize(float x, float n); 46 | public abstract String getName(); 47 | public abstract String getShortname(); 48 | public abstract String getParameter(); 49 | public abstract boolean isAdjustable(); 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/signal/apodization/HammingApodization.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package signal.apodization; 33 | 34 | public class HammingApodization extends AbstractApodization { 35 | 36 | @Override 37 | public float apodize(float x, float n) { 38 | return (float)(0.54 - 0.46 * Math.cos(x*2.0*Math.PI/(n-1))); 39 | } 40 | 41 | @Override 42 | public String getName() { 43 | return "Hamming"; 44 | } 45 | 46 | @Override 47 | public String getShortname() { 48 | return "HAMMING"; 49 | } 50 | 51 | @Override 52 | public String getParameter() { 53 | return ""; 54 | } 55 | 56 | @Override 57 | public boolean isAdjustable() { 58 | return false; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/main/java/signal/apodization/HannApodization.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package signal.apodization; 33 | 34 | public class HannApodization extends AbstractApodization { 35 | 36 | @Override 37 | public float apodize(float x, float n) { 38 | return (float)(0.5 *(1-Math.cos(x*2.0*Math.PI/(n-1)))); 39 | } 40 | 41 | @Override 42 | public String getName() { 43 | return "Hann"; 44 | } 45 | 46 | @Override 47 | public String getShortname() { 48 | return "HANN"; 49 | } 50 | 51 | @Override 52 | public String getParameter() { 53 | return ""; 54 | } 55 | 56 | @Override 57 | public boolean isAdjustable() { 58 | return false; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/main/java/signal/apodization/RaisedCosineApodization.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package signal.apodization; 33 | 34 | public class RaisedCosineApodization extends AbstractApodization { 35 | 36 | public RaisedCosineApodization(double value) { 37 | super(value); 38 | } 39 | 40 | @Override 41 | public String getName() { 42 | return "Cosine"; 43 | } 44 | 45 | @Override 46 | public String getShortname() { 47 | return "COS"; 48 | } 49 | 50 | @Override 51 | public String getParameter() { 52 | return "Exponent"; 53 | } 54 | 55 | @Override 56 | public float apodize(float x, float n) { 57 | double a = Math.PI*x/(n-1) - Math.PI*0.5; 58 | return (float)Math.pow(Math.cos(a), value); 59 | } 60 | 61 | @Override 62 | public boolean isAdjustable() { 63 | return true; 64 | } 65 | 66 | } 67 | -------------------------------------------------------------------------------- /src/main/java/signal/apodization/TukeyApodization.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package signal.apodization; 33 | 34 | public class TukeyApodization extends AbstractApodization { 35 | 36 | public TukeyApodization(double value) { 37 | super(value); 38 | } 39 | 40 | @Override 41 | public String getName() { 42 | return "Tukey"; 43 | } 44 | 45 | @Override 46 | public String getShortname() { 47 | return "TUKEY"; 48 | } 49 | 50 | @Override 51 | public String getParameter() { 52 | return "Alpha"; 53 | } 54 | 55 | @Override 56 | public float apodize(float x, float n) { 57 | double a = value*(n-1.0)*0.5; 58 | if (x < a) 59 | return (float)(0.5*(1.0+Math.cos(Math.PI*(x/a-1.0)))); 60 | if (x <= (n-1)*(1.0-value*0.5)) 61 | return 1f; 62 | return (float)(0.5*(1.0+Math.cos(Math.PI*(x/a-2/value+1.0)))); 63 | } 64 | 65 | @Override 66 | public boolean isAdjustable() { 67 | return true; 68 | } 69 | 70 | } 71 | -------------------------------------------------------------------------------- /src/main/java/signal/apodization/UniformApodization.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package signal.apodization; 33 | 34 | public class UniformApodization extends AbstractApodization { 35 | 36 | @Override 37 | public String getName() { 38 | return "Uniform"; 39 | } 40 | 41 | @Override 42 | public String getShortname() { 43 | return "NO"; 44 | } 45 | 46 | @Override 47 | public String getParameter() { 48 | return ""; 49 | } 50 | 51 | @Override 52 | public float apodize(float x, float n) { 53 | return 1f; 54 | } 55 | 56 | @Override 57 | public boolean isAdjustable() { 58 | return false; 59 | } 60 | 61 | } 62 | -------------------------------------------------------------------------------- /src/main/java/signal/apodization/WelchApodization.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package signal.apodization; 33 | 34 | public class WelchApodization extends AbstractApodization { 35 | 36 | @Override 37 | public float apodize(float x, float n) { 38 | double b = (n-1)*0.5; 39 | double c = (x-b)/b; 40 | return (float)(1.0 - c*c); 41 | } 42 | 43 | @Override 44 | public String getShortname() { 45 | return "WELCH"; 46 | } 47 | 48 | @Override 49 | public String getName() { 50 | return "Welch"; 51 | } 52 | 53 | @Override 54 | public String getParameter() { 55 | return ""; 56 | } 57 | 58 | @Override 59 | public boolean isAdjustable() { 60 | return false; 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /src/main/java/signal/factory/Constant.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package signal.factory; 33 | 34 | import signal.RealSignal; 35 | 36 | public class Constant extends SignalFactory { 37 | 38 | public Constant() { 39 | super(new double[] {}); 40 | } 41 | 42 | @Override 43 | public String getName() { 44 | return "Constant"; 45 | } 46 | 47 | @Override 48 | public String[] getParametersName() { 49 | return new String[] {}; 50 | } 51 | 52 | @Override 53 | public void setParameters(double[] parameters) { 54 | } 55 | 56 | @Override 57 | public double[] getParameters() { 58 | return new double[] {}; 59 | } 60 | 61 | @Override 62 | public void fill(RealSignal signal) { 63 | for(int x=0; x. 30 | */ 31 | 32 | package signal.factory; 33 | 34 | import signal.RealSignal; 35 | 36 | public class DoG extends SignalFactory { 37 | 38 | private double sigma1 = 3.0; 39 | private double sigma2 = 4.0; 40 | 41 | public DoG(double sigma1, double sigma2) { 42 | super(new double[] {sigma1, sigma2}); 43 | setParameters(new double[] {sigma1, sigma2}); 44 | } 45 | 46 | @Override 47 | public String getName() { 48 | return "DoG"; 49 | } 50 | 51 | @Override 52 | public String[] getParametersName() { 53 | return new String[] {"Sigma 1", "Sigma 2"}; 54 | } 55 | 56 | @Override 57 | public void setParameters(double[] parameters) { 58 | if (parameters.length >= 1) 59 | this.sigma1 = parameters[0]; 60 | if (parameters.length >= 2) 61 | this.sigma2 = parameters[1]; 62 | } 63 | 64 | @Override 65 | public double[] getParameters() { 66 | return new double[] {sigma1, sigma2}; 67 | } 68 | 69 | @Override 70 | public void fill(RealSignal signal) { 71 | double K1 = 0.5 / (sigma1*sigma1); 72 | double K2 = 0.5 / (sigma2*sigma2); 73 | for(int x=0; x. 30 | */ 31 | 32 | package signal.factory; 33 | 34 | import signal.RealSignal; 35 | 36 | public class Impulse extends SignalFactory { 37 | 38 | @Override 39 | public String getName() { 40 | return "Impulse"; 41 | } 42 | 43 | @Override 44 | public String[] getParametersName() { 45 | return new String[] {}; 46 | } 47 | 48 | @Override 49 | public void setParameters(double[] parameters) { 50 | } 51 | 52 | @Override 53 | public double[] getParameters() { 54 | return new double[] {}; 55 | } 56 | 57 | @Override 58 | public void fill(RealSignal signal) { 59 | int i = (int)(xc); 60 | int j = (int)(yc); 61 | int k = (int)(zc); 62 | signal.data[k][i+nx*j] += (float)(amplitude); 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/main/java/signal/factory/Laplacian.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package signal.factory; 33 | 34 | import signal.ComplexSignal; 35 | import signal.RealSignal; 36 | import signal.factory.complex.ComplexSignalFactory; 37 | import deconvolutionlab.monitor.Monitors; 38 | import fft.AbstractFFT; 39 | import fft.FFT; 40 | 41 | public class Laplacian extends SignalFactory { 42 | 43 | public Laplacian() { 44 | super(new double[] {}); 45 | } 46 | 47 | @Override 48 | public String getName() { 49 | return "Laplacian"; 50 | } 51 | 52 | @Override 53 | public String[] getParametersName() { 54 | return new String[] {}; 55 | } 56 | 57 | @Override 58 | public void setParameters(double[] parameters) { 59 | } 60 | 61 | @Override 62 | public double[] getParameters() { 63 | return new double[] {}; 64 | } 65 | 66 | @Override 67 | public void fill(RealSignal signal) { 68 | AbstractFFT fft = FFT.createDefaultFFT(Monitors.createDefaultMonitor(), nx, ny, nz); 69 | ComplexSignal C = ComplexSignalFactory.laplacian(nx, ny, nz); 70 | RealSignal s = fft.inverse(C).circular().times((float)amplitude); 71 | signal.copy(s); 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /src/main/java/signal/factory/Sphere.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package signal.factory; 33 | 34 | import signal.RealSignal; 35 | 36 | public class Sphere extends SignalFactory { 37 | 38 | private double radius = 10; 39 | private double slope = 1; 40 | 41 | public Sphere(double radius, double slope) { 42 | super(new double[] {radius, slope}); 43 | setParameters(new double[] {radius, slope}); 44 | } 45 | 46 | @Override 47 | public String getName() { 48 | return "Sphere"; 49 | } 50 | 51 | @Override 52 | public String[] getParametersName() { 53 | return new String[] {"Radius", "Sigmoid Curve Slope"}; 54 | } 55 | 56 | @Override 57 | public void setParameters(double[] parameters) { 58 | if (parameters.length >= 1) 59 | this.radius = parameters[0]; 60 | if (parameters.length >= 2) 61 | this.slope = parameters[1]; 62 | } 63 | 64 | @Override 65 | public double[] getParameters() { 66 | return new double[] {radius, slope}; 67 | } 68 | 69 | @Override 70 | public void fill(RealSignal signal) { 71 | for(int x=0; x. 30 | */ 31 | 32 | package signal.padding; 33 | 34 | public abstract class AbstractPadding { 35 | 36 | private int dimOriginal[] = new int[] {0, 0, 0}; 37 | private int dimPadded[] = new int[] {0, 0, 0}; 38 | 39 | public AbstractPadding() { 40 | } 41 | 42 | public int[] pad(int mx, int my, int mz) { 43 | dimOriginal[0] = mx; 44 | dimOriginal[1] = my; 45 | dimOriginal[2] = mz; 46 | dimPadded[0] = padding(dimOriginal[0]); 47 | dimPadded[1] = padding(dimOriginal[1]); 48 | dimPadded[2] = padding(dimOriginal[2]); 49 | return dimPadded; 50 | } 51 | 52 | public int[] getOriginalDimension() { 53 | return dimOriginal; 54 | } 55 | public int[] getPaddedDimension() { 56 | return dimPadded; 57 | } 58 | 59 | public abstract String getName(); 60 | public abstract String getShortname(); 61 | 62 | protected abstract int padding(int nx); 63 | } 64 | -------------------------------------------------------------------------------- /src/main/java/signal/padding/EvenPadding.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package signal.padding; 33 | 34 | public class EvenPadding extends AbstractPadding { 35 | 36 | @Override 37 | public String getName() { 38 | return "Even"; 39 | } 40 | 41 | @Override 42 | public String getShortname() { 43 | return "X2"; 44 | } 45 | 46 | @Override 47 | public int padding(int x) { 48 | return x % 2 == 0 ? x : x+1 ; 49 | } 50 | 51 | } 52 | -------------------------------------------------------------------------------- /src/main/java/signal/padding/Multiple235Padding.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package signal.padding; 33 | 34 | import java.util.ArrayList; 35 | import java.util.Collections; 36 | 37 | public class Multiple235Padding extends AbstractPadding { 38 | 39 | private ArrayList m235 = new ArrayList(); 40 | 41 | public Multiple235Padding() { 42 | for (int m2 = 0; m2 < 12; m2++) 43 | for (int m3 = 0; m3 < 11; m3++) 44 | for (int m5 = 0; m5 < 10; m5++) { 45 | double p = Math.pow(2, m2) * Math.pow(3, m3) * Math.pow(5, m5); 46 | if (p < 20000.0) 47 | m235.add(new Integer((int)p)); 48 | } 49 | Collections.sort(m235); 50 | } 51 | 52 | @Override 53 | public String getName() { 54 | return "Multiple {2, 3, 5}"; 55 | } 56 | 57 | @Override 58 | public String getShortname() { 59 | return "X2X3X5"; 60 | } 61 | 62 | @Override 63 | public int padding(int x) { 64 | for (Integer m : m235) { 65 | if (m >= x) 66 | return m.intValue(); 67 | } 68 | return x; 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /src/main/java/signal/padding/Multiple23Padding.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package signal.padding; 33 | 34 | import java.util.ArrayList; 35 | import java.util.Collections; 36 | 37 | public class Multiple23Padding extends AbstractPadding { 38 | 39 | private ArrayList m23 = new ArrayList(); 40 | 41 | public Multiple23Padding() { 42 | for(int m2=0; m2<12; m2++) 43 | for(int m3=0; m3<11; m3++) { 44 | double p = Math.pow(2, m2) * Math.pow(3, m3); 45 | if (p<20000.0) 46 | m23.add(new Integer((int)p)); 47 | } 48 | Collections.sort(m23); 49 | } 50 | 51 | @Override 52 | public String getName() { 53 | return "Multiple {2, 3}"; 54 | } 55 | 56 | @Override 57 | public String getShortname() { 58 | return "X2X3"; 59 | } 60 | 61 | @Override 62 | public int padding(int x) { 63 | for(Integer m : m23) 64 | if (m >= x) 65 | return m.intValue(); 66 | return x; 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /src/main/java/signal/padding/Multiple2Padding.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package signal.padding; 33 | 34 | public class Multiple2Padding extends AbstractPadding { 35 | 36 | @Override 37 | public String getName() { 38 | return "Even"; 39 | } 40 | 41 | @Override 42 | public String getShortname() { 43 | return "X2"; 44 | } 45 | 46 | @Override 47 | public int padding(int x) { 48 | return x % 2 == 0 ? x : x+1 ; 49 | } 50 | 51 | } 52 | -------------------------------------------------------------------------------- /src/main/java/signal/padding/Multiple8Padding.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package signal.padding; 33 | 34 | public class Multiple8Padding extends AbstractPadding { 35 | 36 | @Override 37 | public String getName() { 38 | return "Multiple of 8"; 39 | } 40 | 41 | @Override 42 | public String getShortname() { 43 | return "X8"; 44 | } 45 | 46 | @Override 47 | public int padding(int x) { 48 | return x + x % 8; 49 | } 50 | 51 | } 52 | -------------------------------------------------------------------------------- /src/main/java/signal/padding/MultiplePadding.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package signal.padding; 33 | 34 | public class MultiplePadding extends AbstractPadding { 35 | 36 | private int m = 2; 37 | 38 | public MultiplePadding(int m) { 39 | this.m = m; 40 | } 41 | 42 | @Override 43 | public String getName() { 44 | return "Multiple of " + m; 45 | } 46 | 47 | @Override 48 | public String getShortname() { 49 | return "X" + m; 50 | } 51 | 52 | @Override 53 | public int padding(int x) { 54 | return x + x % m; 55 | } 56 | 57 | } 58 | -------------------------------------------------------------------------------- /src/main/java/signal/padding/NoPadding.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package signal.padding; 33 | 34 | public class NoPadding extends AbstractPadding { 35 | 36 | @Override 37 | public String getName() { 38 | return "None"; 39 | } 40 | 41 | @Override 42 | public String getShortname() { 43 | return "NO"; 44 | } 45 | 46 | @Override 47 | public int padding(int x) { 48 | return x; 49 | } 50 | 51 | } 52 | -------------------------------------------------------------------------------- /src/main/java/signal/padding/Power2Padding.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package signal.padding; 33 | 34 | public class Power2Padding extends AbstractPadding { 35 | 36 | @Override 37 | public String getName() { 38 | return "Power of 2"; 39 | } 40 | 41 | @Override 42 | public String getShortname() { 43 | return "E2"; 44 | } 45 | 46 | @Override 47 | public int padding(int x) { 48 | int power = 1; 49 | int y = 1; 50 | while(y < x) { 51 | y *= 2; 52 | power++; 53 | } 54 | y = 1; 55 | for(int i=0; i= max) 36 | x.data[k][i] = max; 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/signal/range/IdentityRange.java: -------------------------------------------------------------------------------- 1 | package signal.range; 2 | 3 | import deconvolutionlab.monitor.Monitors; 4 | import signal.RealSignal; 5 | 6 | public class IdentityRange extends AbstractRange { 7 | 8 | protected Monitors monitors; 9 | 10 | public IdentityRange(Monitors monitors) { 11 | super(monitors); 12 | } 13 | 14 | public void apply(RealSignal x) { 15 | 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/signal/range/NonNegativeRange.java: -------------------------------------------------------------------------------- 1 | package signal.range; 2 | 3 | import deconvolutionlab.monitor.Monitors; 4 | import signal.RealSignal; 5 | 6 | public class NonNegativeRange extends AbstractRange { 7 | 8 | protected Monitors monitors; 9 | 10 | public NonNegativeRange(Monitors monitors) { 11 | super(monitors); 12 | } 13 | 14 | public void apply(RealSignal x) { 15 | if (monitors != null) 16 | monitors.log("Apply non-negative constraint"); 17 | int nxy = x.nx * x.ny; 18 | for(int k=0; k. 30 | */ 31 | 32 | package wavelets.spline; 33 | 34 | import signal.RealSignal; 35 | import wavelets.AbstractWavelets; 36 | 37 | public class Spline1Wavelets extends AbstractWavelets { 38 | 39 | private SplineWaveletsTool tool; 40 | 41 | public Spline1Wavelets(int scale) { 42 | super(scale); 43 | this.tool = new SplineWaveletsTool(scale, 1); 44 | } 45 | 46 | @Override 47 | public void setScale(int scale) { 48 | this.scales = scale; 49 | this.tool = new SplineWaveletsTool(scale, 1); 50 | } 51 | 52 | @Override 53 | public String getName() { 54 | return "Spline1"; 55 | } 56 | 57 | @Override 58 | public String getDocumentation() { 59 | return "Spline Wavelets (order 1)"; 60 | } 61 | 62 | @Override 63 | public void analysis1(RealSignal in, RealSignal out) { 64 | tool.analysis1(in, out); 65 | } 66 | 67 | @Override 68 | public void synthesis1(RealSignal in, RealSignal out) { 69 | tool.synthesis1(in, out); 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /src/main/java/wavelets/spline/Spline3Wavelets.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package wavelets.spline; 33 | 34 | import signal.RealSignal; 35 | import wavelets.AbstractWavelets; 36 | 37 | public class Spline3Wavelets extends AbstractWavelets { 38 | 39 | private SplineWaveletsTool tool; 40 | 41 | public Spline3Wavelets(int scale) { 42 | super(scale); 43 | this.tool = new SplineWaveletsTool(scale, 3); 44 | } 45 | 46 | @Override 47 | public void setScale(int scale) { 48 | this.scales = scale; 49 | this.tool = new SplineWaveletsTool(scale, 1); 50 | } 51 | 52 | @Override 53 | public String getName() { 54 | return "Spline3"; 55 | } 56 | 57 | @Override 58 | public String getDocumentation() { 59 | return "Spline Wavelets (order 3)"; 60 | } 61 | 62 | @Override 63 | public void analysis1(RealSignal in, RealSignal out) { 64 | tool.analysis1(in, out); 65 | } 66 | 67 | @Override 68 | public void synthesis1(RealSignal in, RealSignal out) { 69 | tool.synthesis1(in, out); 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /src/main/java/wavelets/spline/Spline5Wavelets.java: -------------------------------------------------------------------------------- 1 | /* 2 | * DeconvolutionLab2 3 | * 4 | * Conditions of use: You are free to use this software for research or 5 | * educational purposes. In addition, we expect you to include adequate 6 | * citations and acknowledgments whenever you present or publish results that 7 | * are based on it. 8 | * 9 | * Reference: DeconvolutionLab2: An Open-Source Software for Deconvolution 10 | * Microscopy D. Sage, L. Donati, F. Soulez, D. Fortun, G. Schmit, A. Seitz, 11 | * R. Guiet, C. Vonesch, M Unser, Methods of Elsevier, 2017. 12 | */ 13 | 14 | /* 15 | * Copyright 2010-2017 Biomedical Imaging Group at the EPFL. 16 | * 17 | * This file is part of DeconvolutionLab2 (DL2). 18 | * 19 | * DL2 is free software: you can redistribute it and/or modify it under the 20 | * terms of the GNU General Public License as published by the Free Software 21 | * Foundation, either version 3 of the License, or (at your option) any later 22 | * version. 23 | * 24 | * DL2 is distributed in the hope that it will be useful, but WITHOUT ANY 25 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 26 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along with 29 | * DL2. If not, see . 30 | */ 31 | 32 | package wavelets.spline; 33 | 34 | import signal.RealSignal; 35 | import wavelets.AbstractWavelets; 36 | 37 | public class Spline5Wavelets extends AbstractWavelets { 38 | 39 | private SplineWaveletsTool tool; 40 | 41 | public Spline5Wavelets(int scale) { 42 | super(scale); 43 | this.tool = new SplineWaveletsTool(scale, 5); 44 | } 45 | 46 | @Override 47 | public void setScale(int scale) { 48 | this.scales = scale; 49 | this.tool = new SplineWaveletsTool(scale, 1); 50 | } 51 | 52 | @Override 53 | public String getName() { 54 | return "Spline5"; 55 | } 56 | 57 | @Override 58 | public String getDocumentation() { 59 | return "Spline Wavelets (order 5)"; 60 | } 61 | 62 | @Override 63 | public void analysis1(RealSignal in, RealSignal out) { 64 | tool.analysis1(in, out); 65 | } 66 | 67 | @Override 68 | public void synthesis1(RealSignal in, RealSignal out) { 69 | tool.synthesis1(in, out); 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /src/main/resources/DeconvolutionLab2.config: -------------------------------------------------------------------------------- 1 | #DeconvolutionLab2 2 | #Mon May 28 21:50:19 CEST 2018 3 | Resources.epsilon=1E-6 4 | Preprocessing.extxy=0 5 | Algorithm.NNLS.iterations=10 6 | Algorithm.RIF.reg=0.1 7 | Algorithm.FISTA.iterations=10 8 | Preprocessing.apoz=Uniform 9 | Algorithm.ICTM.reg=0.1 10 | Algorithm.algorithm=Regularized Inverse Filter 11 | Algorithm.SIM.gaussian.stdev=1.0 12 | Preprocessing.extz=0 13 | DeconvolutionLab.MainDialog.location.y=23 14 | DeconvolutionLab.MainDialog.location.x=0 15 | DeconvolutionLab.MainDialog.location.w=562 16 | Algorithm.ISTA.wavelets=Haar 17 | Algorithm.TRIF.reg=0.1 18 | Language.job=Job 19 | Language.headless=Run (Headless) 20 | Algorithm.LW.iterations=10 21 | Algorithm.BVLS.step=1.0 22 | Resources.fft=Fastest 23 | Algorithm.FISTA.reg=0.1 24 | Algorithm.ISTA.scale=3 25 | Preprocessing.apoxy=Uniform 26 | Algorithm.ICTM.iterations=10 27 | Controller.constraint=no 28 | Algorithm.RLTV.reg=0.1 29 | Preprocessing.padxy=None 30 | DeconvolutionLab.MainDialog.location.h=490 31 | Algorithm.ISTA.reg=0.1 32 | Controller.residu.enable=false 33 | Algorithm.TM.iterations=10 34 | Algorithm.VC.iterations=10 35 | Controller.time.value=3600 36 | Algorithm.VC.step=1.0 37 | Algorithm.RL.iterations=10 38 | Controller.reference.enable=false 39 | Controller.residu.value=0.01 40 | Algorithm.BVLS.iterations=10 41 | Preprocessing.padz=None 42 | Algorithm.ISTA.iterations=10 43 | Controller.monitor=console table 44 | Controller.reference.value= 45 | Resources.system=yes 46 | Algorithm.TM.reg=0.1 47 | Algorithm.SIM.poisson=0.0 48 | Algorithm.FISTA.step=1.0 49 | Algorithm.TM.step=1.0 50 | Language.language=Command line 51 | Algorithm.FISTA.scale=3 52 | Algorithm.SIM.gaussian.mean=0.0 53 | Algorithm.ICTM.step=1.0 54 | Preprocessing.normalization=1 55 | Path.path=/Volumes/GoogleDrive/My Drive/workspace/DeconvolutionLab2.1-1.6/ 56 | Output.display=true 57 | Algorithm.ISTA.step=1.0 58 | Controller.time.enable=false 59 | Algorithm.LW.step=1.0 60 | Path.current=current 61 | Algorithm.NNLS.step=1.0 62 | Controller.stats=no 63 | Controller.verbose=log 64 | Algorithm.FISTA.wavelets=Haar 65 | Resources.multithreading=yes 66 | -------------------------------------------------------------------------------- /src/main/resources/demos/DemoSimulationAndAlgorithms_CommandLineInterface.sh: -------------------------------------------------------------------------------- 1 | # 2 | # This demo exists in 5 different interfaces: 3 | # - using ImageJ Macro 4 | # - using the command line interface (cshell) 5 | # - in Java, using the DeconvolutionLab2 as a Java Library 6 | # - in Java, using the command of DeconvolutionLab2 7 | # - in Matlab, calling methods of the class DL2 8 | # 9 | 10 | java -jar DeconvolutionLab_2.jar Run -image synthetic CubeSphericalBeads 5.0 0.2 12.0 12.0 size 96 80 64 intensity 128 -psf synthetic Gaussian 2.0 2.0 2.0 size 64 64 64 -algorithm I -out mistackp noshow reference -out mip rescaled byte noshow reference_mip_8bits -out stack reference noshow -path current -monitor console 11 | java -jar DeconvolutionLab_2.jar Run -image file reference.tif -psf synthetic Gaussian 2.0 2.0 2.0 size 64 64 64 -algorithm SIM 0 0 4 -out stack noshow simulation -out mip rescaled byte noshow simulation_mip_8bits -out stack simulation noshow -path current -monitor console 12 | java -jar DeconvolutionLab_2.jar Run -image file simulation.tif -reference file reference.tif -psf synthetic Gaussian 2.0 2.0 2.0 -algorithm RIF 0.01 -out stack noshow RIF -out mip rescaled byte noshow RIF_mip_8bits -stats RIF noshow -path current -monitor console 13 | java -jar DeconvolutionLab_2.jar Run -image file simulation.tif -reference file reference.tif -psf synthetic Gaussian 2.0 2.0 2.0 -algorithm RL 50 -out stack noshow RL -out mip rescaled byte noshow RL_mip_8bits -stats RL noshow -path current -monitor console 14 | java -jar DeconvolutionLab_2.jar Run -image file simulation.tif -reference file reference.tif -psf synthetic Gaussian 2.0 2.0 2.0 -algorithm LW 50 1.5 -out stack noshow LWs -out mip rescaled byte noshow LW_mip_8bits -stats LW noshow -path current -monitor console 15 | java -jar DeconvolutionLab_2.jar Run -image file simulation.tif -reference file reference.tif -psf synthetic Gaussian 2.0 2.0 2.0 -algorithm LW+ 50 1.5 -out stack noshow LW+ -out mip rescaled byte noshow LW+_mip_8bits -stats LW+ noshow -path current -monitor console 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/main/resources/demos/DemoSimulationAndAlgorithms_ImageJMacro.ijm: -------------------------------------------------------------------------------- 1 | /** 2 | * This demo exists in 5 different interfaces: 3 | * - using ImageJ Macro 4 | * - using the command line interface (cshell) 5 | * - in Java, using the DeconvolutionLab2 as a Java Library 6 | * - in Java, using the command of DeconvolutionLab2 7 | * - in Matlab, calling methods of the class DL2 8 | */ 9 | 10 | path = " -path /Users/sage/Desktop/Demo/ImageJMacro/ "; 11 | image = " -image synthetic CubeSphericalBeads 5.0 0.2 12.0 12.0 size 96 80 64 intensity 128 "; 12 | psf = " -psf synthetic Gaussian 2.0 2.0 2.0 size 96 80 64 "; 13 | 14 | // create the reference image 15 | identity = image + " -algorithm I -out mip reference nosave -out stack reference noshow " + path; 16 | run("DeconvolutionLab2 Run", identity + psf); 17 | waitForUser("Demo", "reference"); 18 | 19 | // create the simulation 20 | simulation = " -image file reference.tif -algorithm SIM 0 0 4 -out mip simulation nosave -out stack simulation noshow " + path; 21 | run("DeconvolutionLab2 Run", simulation + psf) 22 | waitForUser("Demo", "simulation"); 23 | 24 | // test various algorithms 25 | deconv = " -image file simulation.tif -reference file reference.tif "+ path + psf; 26 | run("DeconvolutionLab2 Run", " -algorithm RIF 0.01 " + out("RIF") + deconv); 27 | run("DeconvolutionLab2 Run", " -algorithm RL 50 " + out("RL") + deconv); 28 | run("DeconvolutionLab2 Run", " -algorithm LW 50 1.5 " + out("LW") + deconv); 29 | run("DeconvolutionLab2 Run", " -algorithm LW+ 50 1.5 " + out("LW+") + deconv); 30 | 31 | function out(name) { 32 | return "-out mip @1 nosave " + name + " -out mip rescaled byte noshow " + name + "_mip_8bits -out stack noshow " + name + " -stats noshow " + name + " "; 33 | } -------------------------------------------------------------------------------- /src/main/resources/demos/DemoSimulationAndAlgorithms_Matlab.m: -------------------------------------------------------------------------------- 1 | % 2 | % This demo exists in 5 different interfaces: 3 | % - using ImageJ Macro 4 | % - using the command line interface (cshell) 5 | % - in Java, using the DeconvolutionLab2 as a Java Library 6 | % - in Java, using the command of DeconvolutionLab2 7 | % - in Matlab, calling methods of the class DL2 8 | % 9 | function DemoSimulationAndAlgorithms_Matlab 10 | 11 | javaaddpath([matlabroot filesep 'java' filesep 'DeconvolutionLab_2.jar']) 12 | 13 | path = '/Users/sage/Desktop/Demo/Matlab/'; 14 | 15 | psf = DL2.open('synthetic', 'Gaussian 2.0 2.0 2.0 size 64 64 64', path); 16 | 17 | ref = DL2.open('synthetic', 'CubeSphericalBeads 5.0 0.2 12.0 12.0 size 96 80 64 intensity 128', path); 18 | 19 | y = DL2.SIM(ref, psf, 0, 0, 4, ['-out mip simulation nosave -out stack simulation noshow -path ' path]); 20 | 21 | x = DL2.RIF( y, psf, ref, 0.01, [out('RIF') ' -path ' path]); 22 | x = DL2.RL( y, psf, ref, 50, [out('RL') ' -path ' path]); 23 | x = DL2.LW( y, psf, ref, 50, 1.5, [out('LW') ' -path ' path]); 24 | x = DL2.NNLS(y, psf, ref, 50, 1.5, [out('LW+') ' -path ' path]); 25 | 26 | end 27 | 28 | function o = out(name) 29 | o= ['-out mip @1 nosave ' name ' -out mip rescaled byte noshow ' name '_mip_8bits -out stack noshow ' name ' -stats noshow ' name ' ']; 30 | end 31 | -------------------------------------------------------------------------------- /src/main/resources/plugins.config: -------------------------------------------------------------------------------- 1 | # Name: DeconvolutionLab 2 2 | 3 | # Daniel Sage 4 | # Biomedical Imaging Group 5 | # Ecole Polytechnique Federale de Lausanne (EPFL), Lausanne, Switzerland 6 | 7 | # Date: 11 July 2016 8 | 9 | Plugins>DeconvolutionLab2, Lab, "DeconvolutionLab2 Lab", DeconvolutionLab2_Lab 10 | Plugins>DeconvolutionLab2, Run, "DeconvolutionLab2 Run", DeconvolutionLab2_Run 11 | Plugins>DeconvolutionLab2, Launch, "DeconvolutionLab2 Launch", DeconvolutionLab2_Launch 12 | Plugins>DeconvolutionLab2, Help, "DeconvolutionLab2 Help", DeconvolutionLab2_Help 13 | --------------------------------------------------------------------------------