Package gov.nih.mipav.model.algorithms
Class fMRIBlindDeconvolution
- java.lang.Object
- 
- java.lang.Thread
- 
- gov.nih.mipav.model.algorithms.AlgorithmBase
- 
- gov.nih.mipav.model.algorithms.fMRIBlindDeconvolution
 
 
 
- 
- All Implemented Interfaces:
- java.awt.event.ActionListener,- java.awt.event.WindowListener,- java.lang.Runnable,- java.util.EventListener
 
 public class fMRIBlindDeconvolution extends AlgorithmBase 
- 
- 
Nested Class SummaryNested Classes Modifier and Type Class Description (package private) classfMRIBlindDeconvolution.ConvAndLinear(package private) classfMRIBlindDeconvolution.DiscretInteg(package private) classfMRIBlindDeconvolution.Tracker
 - 
Field SummaryFields Modifier and Type Field Description private doubleMAX_DELTAprivate doubleMIN_DELTAReference: Hamza Cherkaoui, Thomas Moreau, Abderrahim Halimi, Philippe Ciuciu.- 
Fields inherited from class gov.nih.mipav.model.algorithms.AlgorithmBasedestFlag, destImage, image25D, mask, maxProgressValue, minProgressValue, multiThreadingEnabled, nthreads, progress, progressModulus, progressStep, runningInSeparateThread, separable, srcImage, threadStopped
 
- 
 - 
Constructor SummaryConstructors Constructor Description fMRIBlindDeconvolution()
 - 
Method SummaryAll Methods Instance Methods Concrete Methods Modifier and Type Method Description double[]__inf_norm(double[] x)double[][][]__inf_norm(double[][][] x)double[]_custom_padd(int[] p_total, double[] a, int min_power_of_2, int min_zero_padd, double zero_padd_ratio)double[][]_inf_norm(double[][][] arr, int axis)double[][]_inf_norm(double[][] arr, int axis)double[]_loops_deconv(double[] y, double[] diff_z, double[][] H, double lbda, long nb_iter, boolean early_stopping, long wind, double tol)double[][]_padd_assymetric(double[][] arrays, int[] p, double c, java.lang.String paddtype)double[]_padd_assymetric(double[] arrays, int[] p, double c, java.lang.String paddtype)double[][]_padd_symetric(double[][] arrays, int p, double c, java.lang.String paddtype)double[]_padd_symetric(double[] arrays, int p, double c, java.lang.String paddtype)void_test_conv_adj_fourier_hrf(double[] ai_s, double[] hrf, java.lang.String testname)void_test_conv_adj_toeplitz_kernel_hrf(double[] ai_s, double[] hrf, java.lang.String testname)void_test_conv_adj_toeplitz_kernel_signal(double[] ai_s, double[] hrf, java.lang.String testname)void_test_conv_fourier_kernel_hrf(double[] ai_s, double[] hrf, java.lang.String testname)void_test_conv_toeplitz_kernel_hrf(double[] ai_s, double[] hrf, java.lang.String testname)void_test_conv_toeplitz_kernel_signal(double[] ai_s, double[] hrf, java.lang.String testname)void_test_data(double[] noisy_ar_s, double[] ar_s, double[] ai_s, double[] i_s, double[] hrf, double[] noise, double snr, int nb_events, java.lang.String testnum)double[][]_unpadd_assymetric(double[][] arrays, int[] p, java.lang.String paddtype)double[]_unpadd_assymetric(double[] arrays, int[] p, java.lang.String paddtype)double[][]_unpadd_symetric(double[][] arrays, int p, java.lang.String paddtype)double[]_unpadd_symetric(double[] arrays, int p, java.lang.String paddtype)void_yield_data(double[][] noisy_ar_s, double[][] ar_s, double[][] ai_s, double[][] i_s, double[][] hrf, double[][] noise, double[] snr, int[] nb_events)voidadd_gaussian_noise(double[] noisy_signal, double[] noise, double[] signal, double snr, boolean haveSeed, long random_state)voidbd(java.util.Vector<java.lang.Double> xout, java.util.Vector<java.lang.Double> zout, java.util.Vector<java.lang.Double> diff_zout, java.util.Vector<java.lang.Double> hout, java.util.Vector<java.lang.Double> dr, java.util.Vector<java.lang.Double> dg, java.util.Vector<java.lang.Double> dJ, double[] y, double t_r, double lbda, double theta, double[] z_0, double hrf_dur, double[] bounds, int nb_iter, int nb_sub_iter, int nb_last_iter, int print_period, boolean early_stopping, int wind, double tol, int verbose)voidblind_deconvolution_example()double[][]custom_padd(int[] padd, double[][] arrays, int min_power_of_2, int min_zero_padd, double zero_padd_ratio)voiddata_generation_example()voiddeconv(double[] x, double[] z, double[] diff_z, java.util.Vector<java.lang.Double> J, java.util.Vector<java.lang.Double> R, java.util.Vector<java.lang.Double> G, double[] y, double t_r, double[] hrf, double lbda, boolean early_stopping, double tol, int wind, int nb_iter, int nb_sub_iter, int verbose)voiddeconv_example()doublefwhm(double[] t_hrf, double[] hrf, int k)voidgen_regular_ai_s(double[] ai_s, double[] i_s, double[] t, int dur, double tr, double dur_bloc, boolean centered)voidgen_regular_bloc_bold(double[] noisy_ar_s, double[] ar_s, double[] ai_s, double[] i_s, double[] t, double[] noise, int dur, double tr, double dur_bloc, boolean sourcehrf, double[] hrf, double snr, boolean haveSeed, long random_state)voidgen_rnd_ai_s(double[] ai_s, double[] i_s, double[] t, double dur, double tr, int nb_events, int avg_dur, double std_dur, boolean middle_spike, boolean overlapping, boolean unitary_block, boolean haveSeed, long random_state, int nb_try, int nb_try_duration, boolean centered)voidgen_rnd_bloc_bold(double[] noisy_ar_s, double[] ar_s, double[] ai_s, double[] i_s, double[] t, double[] noise, double dur, double tr, boolean sourcehrf, double[] hrf, int nb_events, int avg_dur, double std_dur, boolean middle_spike, boolean overlapping, boolean unitary_block, double snr, int nb_try, int nb_try_duration, boolean centered, boolean haveSeed, long random_state)voidgen_rnd_event_bold(double[] noisy_ar_s, double[] ar_s, double[] i_s, double[] t, double[] noise, int dur, double tr, boolean sourcehrf, double[] hrf, int nb_events, double avg_ampl, double std_ampl, double snr, boolean haveSeed, long random_state)voidgen_rnd_i_s(double[] i_s, double[] t, int dur, double tr, int nb_events, double avg_ampl, double std_ampl, boolean haveSeed, long random_state, int nb_try, int nb_try_duration, boolean centered)voidhrf_estim(double[] h, java.util.Vector<java.lang.Double> J, double[] z, double[] y, double t_r, double dur, int verbose)doublehrf_fit_err(double theta, double[] z, double[] y, double t_r, double hrf_dur)private doubleinf_norm(double[] x)private doubleinf_norm(java.util.Vector<java.lang.Double> x)double[]irfft(double[][] x, boolean isOdd)doublelog2(double x)doublemad(double[] x, double c)doublemad_daub_noise_est(double[] x, double c)doublemedian(double[] x)doublenorm(double[] x)java.util.Randomrandom_generator(long random_state)double[][]rfft(double[] x)voidrunAlgorithm()Actually runs the algorithm.doublesign(double x)double[]simple_convolve(double[] k, double[] x, int dim_out)voidsimple_hrf_estimation()double[]simple_retro_convolve(double[] k, double[] x, int dim_out)double[]spectral_convolve(double[] k, double[] xin)double[]spectral_deconvolve(double[] k, double[] x)doublespectral_radius_est(fMRIBlindDeconvolution.ConvAndLinear L, int x_shape, int nb_iter, double tol, boolean verbose)double[]spectral_retro_convolve(double[] k, double[] xin)double[]spectral_retro_deconvolve(double[] k, double[] x)voidspm_hrf(double[] hrf, double[] t_hrf, double delta, double t_r, double dur, boolean normalized_hrf, double dt, double p_delay, double undershoot, double p_disp, double u_disp, double p_u_ratio, double onset)doublestd(double[] x)voidtest_data_gen()voidtest_fourier_adj_convolution_kernel_hrf_on_ai_s()voidtest_fourier_adj_convolution_kernel_hrf_on_dirac()voidtest_fourier_convolution_kernel_hrf_on_ai_s()voidtest_fourier_convolution_kernel_hrf_on_dirac()voidtest_inf_norm()voidtest_integ_adj()voidtest_integ_op()voidtest_power_2_padding_length()voidtest_toeplitz_adj_convolution_kernel_hrf_on_ai_s()voidtest_toeplitz_adj_convolution_kernel_hrf_on_dirac()voidtest_toeplitz_adj_convolution_kernel_signal_on_ai_s()voidtest_toeplitz_adj_convolution_kernel_signal_on_dirac()voidtest_toeplitz_convolution_kernel_hrf_on_ai_s()voidtest_toeplitz_convolution_kernel_hrf_on_dirac()voidtest_toeplitz_convolution_kernel_signal_on_ai_s()voidtest_toeplitz_convolution_kernel_signal_on_dirac()voidtest_zero_mirror_zero_padd_unpadd()voidtest_zero_padd_unpadd()double[][]toeplitz_from_kernel(double[] k, int dim_in, int dim_out)doubletp(double[] t_hrf, double[] hrf)voidyield_blocks_signal(double[][] ai_s, double[][] hrf, double[][] alpha, double[] tr)voidyield_diracs_signal(double[][] i_s, double[][] hrf, double[][] alpha, double[] tr)private doublezabs(double zr, double zi)zabs computes the absolute value or magnitude of a double precision complex variable zr + j*zi.private voidzdiv(double ar, double ai, double br, double bi, double[] cr, double[] ci)complex divide c = a/b.- 
Methods inherited from class gov.nih.mipav.model.algorithms.AlgorithmBaseactionPerformed, addListener, addProgressChangeListener, calculateImageSize, calculatePrincipleAxis, computeElapsedTime, computeElapsedTime, convertIntoFloat, delinkProgressToAlgorithm, delinkProgressToAlgorithmMulti, displayError, errorCleanUp, finalize, fireProgressStateChanged, fireProgressStateChanged, fireProgressStateChanged, fireProgressStateChanged, fireProgressStateChanged, generateProgressValues, getDestImage, getElapsedTime, getMask, getMaxProgressValue, getMinProgressValue, getNumberOfThreads, getProgress, getProgressChangeListener, getProgressChangeListeners, getProgressModulus, getProgressStep, getProgressValues, getSrcImage, isCompleted, isImage25D, isMultiThreadingEnabled, isRunningInSeparateThread, isThreadStopped, linkProgressToAlgorithm, linkProgressToAlgorithm, makeProgress, notifyListeners, removeListener, removeProgressChangeListener, run, setCompleted, setImage25D, setMask, setMaxProgressValue, setMinProgressValue, setMultiThreadingEnabled, setNumberOfThreads, setProgress, setProgressModulus, setProgressStep, setProgressValues, setProgressValues, setRunningInSeparateThread, setSrcImage, setStartTime, setThreadStopped, startMethod, windowActivated, windowClosed, windowClosing, windowDeactivated, windowDeiconified, windowIconified, windowOpened
 - 
Methods inherited from class java.lang.ThreadactiveCount, checkAccess, clone, countStackFrames, currentThread, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, onSpinWait, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, suspend, toString, yield
 
- 
 
- 
- 
- 
Field Detail- 
MIN_DELTAprivate final double MIN_DELTA Reference: Hamza Cherkaoui, Thomas Moreau, Abderrahim Halimi, Philippe Ciuciu. Sparsity-based blind deconvolution of neural activation signal in fMRI. IEEE-ICASSP 2019 - International Conference on Acoustics, Speech and Signal Processing, May 2019, Brighton, United Kingdom. ffhal-02085810v2- See Also:
- Constant Field Values
 
 - 
MAX_DELTAprivate final double MAX_DELTA - See Also:
- Constant Field Values
 
 
- 
 - 
Method Detail- 
runAlgorithmpublic void runAlgorithm() Description copied from class:AlgorithmBaseActually runs the algorithm. Implemented by inheriting algorithms.- Specified by:
- runAlgorithmin class- AlgorithmBase
 
 - 
spm_hrfpublic void spm_hrf(double[] hrf, double[] t_hrf, double delta, double t_r, double dur, boolean normalized_hrf, double dt, double p_delay, double undershoot, double p_disp, double u_disp, double p_u_ratio, double onset)
 - 
test_power_2_padding_lengthpublic void test_power_2_padding_length() 
 - 
test_zero_padd_unpaddpublic void test_zero_padd_unpadd() 
 - 
test_zero_mirror_zero_padd_unpaddpublic void test_zero_mirror_zero_padd_unpadd() 
 - 
_padd_symetricpublic double[] _padd_symetric(double[] arrays, int p, double c, java.lang.String paddtype)
 - 
_padd_symetricpublic double[][] _padd_symetric(double[][] arrays, int p, double c, java.lang.String paddtype)
 - 
_padd_assymetricpublic double[] _padd_assymetric(double[] arrays, int[] p, double c, java.lang.String paddtype)
 - 
_padd_assymetricpublic double[][] _padd_assymetric(double[][] arrays, int[] p, double c, java.lang.String paddtype)
 - 
_unpadd_symetricpublic double[] _unpadd_symetric(double[] arrays, int p, java.lang.String paddtype)
 - 
_unpadd_symetricpublic double[][] _unpadd_symetric(double[][] arrays, int p, java.lang.String paddtype)
 - 
_unpadd_assymetricpublic double[] _unpadd_assymetric(double[] arrays, int[] p, java.lang.String paddtype)
 - 
_unpadd_assymetricpublic double[][] _unpadd_assymetric(double[][] arrays, int[] p, java.lang.String paddtype)
 - 
log2public double log2(double x) 
 - 
_custom_paddpublic double[] _custom_padd(int[] p_total, double[] a, int min_power_of_2, int min_zero_padd, double zero_padd_ratio)
 - 
custom_paddpublic double[][] custom_padd(int[] padd, double[][] arrays, int min_power_of_2, int min_zero_padd, double zero_padd_ratio)
 - 
rfftpublic double[][] rfft(double[] x) 
 - 
irfftpublic double[] irfft(double[][] x, boolean isOdd)
 - 
spectral_convolvepublic double[] spectral_convolve(double[] k, double[] xin)
 - 
spectral_retro_convolvepublic double[] spectral_retro_convolve(double[] k, double[] xin)
 - 
zabsprivate double zabs(double zr, double zi)zabs computes the absolute value or magnitude of a double precision complex variable zr + j*zi.- Parameters:
- zr- double
- zi- double
- Returns:
- double
 
 - 
zdivprivate void zdiv(double ar, double ai, double br, double bi, double[] cr, double[] ci)complex divide c = a/b.- Parameters:
- ar- double
- ai- double
- br- double
- bi- double
- cr- double[]
- ci- double[]
 
 - 
spectral_deconvolvepublic double[] spectral_deconvolve(double[] k, double[] x)
 - 
spectral_retro_deconvolvepublic double[] spectral_retro_deconvolve(double[] k, double[] x)
 - 
toeplitz_from_kernelpublic double[][] toeplitz_from_kernel(double[] k, int dim_in, int dim_out)
 - 
simple_convolvepublic double[] simple_convolve(double[] k, double[] x, int dim_out)
 - 
simple_retro_convolvepublic double[] simple_retro_convolve(double[] k, double[] x, int dim_out)
 - 
medianpublic double median(double[] x) 
 - 
madpublic double mad(double[] x, double c)
 - 
mad_daub_noise_estpublic double mad_daub_noise_est(double[] x, double c)
 - 
fwhmpublic double fwhm(double[] t_hrf, double[] hrf, int k)
 - 
tppublic double tp(double[] t_hrf, double[] hrf)
 - 
random_generatorpublic java.util.Random random_generator(long random_state) 
 - 
spectral_radius_estpublic double spectral_radius_est(fMRIBlindDeconvolution.ConvAndLinear L, int x_shape, int nb_iter, double tol, boolean verbose) 
 - 
test_inf_normpublic void test_inf_norm() 
 - 
__inf_normpublic double[] __inf_norm(double[] x) 
 - 
_inf_normpublic double[][] _inf_norm(double[][] arr, int axis)
 - 
_inf_normpublic double[][] _inf_norm(double[][][] arr, int axis)
 - 
__inf_normpublic double[][][] __inf_norm(double[][][] x) 
 - 
normpublic double norm(double[] x) 
 - 
add_gaussian_noisepublic void add_gaussian_noise(double[] noisy_signal, double[] noise, double[] signal, double snr, boolean haveSeed, long random_state)
 - 
gen_rnd_ai_spublic void gen_rnd_ai_s(double[] ai_s, double[] i_s, double[] t, double dur, double tr, int nb_events, int avg_dur, double std_dur, boolean middle_spike, boolean overlapping, boolean unitary_block, boolean haveSeed, long random_state, int nb_try, int nb_try_duration, boolean centered)
 - 
gen_rnd_bloc_boldpublic void gen_rnd_bloc_bold(double[] noisy_ar_s, double[] ar_s, double[] ai_s, double[] i_s, double[] t, double[] noise, double dur, double tr, boolean sourcehrf, double[] hrf, int nb_events, int avg_dur, double std_dur, boolean middle_spike, boolean overlapping, boolean unitary_block, double snr, int nb_try, int nb_try_duration, boolean centered, boolean haveSeed, long random_state)
 - 
_yield_datapublic void _yield_data(double[][] noisy_ar_s, double[][] ar_s, double[][] ai_s, double[][] i_s, double[][] hrf, double[][] noise, double[] snr, int[] nb_events)
 - 
_test_datapublic void _test_data(double[] noisy_ar_s, double[] ar_s, double[] ai_s, double[] i_s, double[] hrf, double[] noise, double snr, int nb_events, java.lang.String testnum)
 - 
test_data_genpublic void test_data_gen() 
 - 
gen_regular_ai_spublic void gen_regular_ai_s(double[] ai_s, double[] i_s, double[] t, int dur, double tr, double dur_bloc, boolean centered)
 - 
gen_regular_bloc_boldpublic void gen_regular_bloc_bold(double[] noisy_ar_s, double[] ar_s, double[] ai_s, double[] i_s, double[] t, double[] noise, int dur, double tr, double dur_bloc, boolean sourcehrf, double[] hrf, double snr, boolean haveSeed, long random_state)
 - 
gen_rnd_i_spublic void gen_rnd_i_s(double[] i_s, double[] t, int dur, double tr, int nb_events, double avg_ampl, double std_ampl, boolean haveSeed, long random_state, int nb_try, int nb_try_duration, boolean centered)
 - 
gen_rnd_event_boldpublic void gen_rnd_event_bold(double[] noisy_ar_s, double[] ar_s, double[] i_s, double[] t, double[] noise, int dur, double tr, boolean sourcehrf, double[] hrf, int nb_events, double avg_ampl, double std_ampl, double snr, boolean haveSeed, long random_state)
 - 
yield_diracs_signalpublic void yield_diracs_signal(double[][] i_s, double[][] hrf, double[][] alpha, double[] tr)
 - 
yield_blocks_signalpublic void yield_blocks_signal(double[][] ai_s, double[][] hrf, double[][] alpha, double[] tr)
 - 
_test_conv_toeplitz_kernel_hrfpublic void _test_conv_toeplitz_kernel_hrf(double[] ai_s, double[] hrf, java.lang.String testname)
 - 
test_toeplitz_convolution_kernel_hrf_on_diracpublic void test_toeplitz_convolution_kernel_hrf_on_dirac() 
 - 
test_toeplitz_convolution_kernel_hrf_on_ai_spublic void test_toeplitz_convolution_kernel_hrf_on_ai_s() 
 - 
_test_conv_fourier_kernel_hrfpublic void _test_conv_fourier_kernel_hrf(double[] ai_s, double[] hrf, java.lang.String testname)
 - 
test_fourier_convolution_kernel_hrf_on_diracpublic void test_fourier_convolution_kernel_hrf_on_dirac() 
 - 
test_fourier_convolution_kernel_hrf_on_ai_spublic void test_fourier_convolution_kernel_hrf_on_ai_s() 
 - 
_test_conv_adj_toeplitz_kernel_hrfpublic void _test_conv_adj_toeplitz_kernel_hrf(double[] ai_s, double[] hrf, java.lang.String testname)
 - 
test_toeplitz_adj_convolution_kernel_hrf_on_diracpublic void test_toeplitz_adj_convolution_kernel_hrf_on_dirac() 
 - 
test_toeplitz_adj_convolution_kernel_hrf_on_ai_spublic void test_toeplitz_adj_convolution_kernel_hrf_on_ai_s() 
 - 
_test_conv_adj_fourier_hrfpublic void _test_conv_adj_fourier_hrf(double[] ai_s, double[] hrf, java.lang.String testname)
 - 
test_fourier_adj_convolution_kernel_hrf_on_diracpublic void test_fourier_adj_convolution_kernel_hrf_on_dirac() 
 - 
test_fourier_adj_convolution_kernel_hrf_on_ai_spublic void test_fourier_adj_convolution_kernel_hrf_on_ai_s() 
 - 
_test_conv_toeplitz_kernel_signalpublic void _test_conv_toeplitz_kernel_signal(double[] ai_s, double[] hrf, java.lang.String testname)
 - 
test_toeplitz_convolution_kernel_signal_on_diracpublic void test_toeplitz_convolution_kernel_signal_on_dirac() 
 - 
test_toeplitz_convolution_kernel_signal_on_ai_spublic void test_toeplitz_convolution_kernel_signal_on_ai_s() 
 - 
_test_conv_adj_toeplitz_kernel_signalpublic void _test_conv_adj_toeplitz_kernel_signal(double[] ai_s, double[] hrf, java.lang.String testname)
 - 
test_toeplitz_adj_convolution_kernel_signal_on_diracpublic void test_toeplitz_adj_convolution_kernel_signal_on_dirac() 
 - 
test_toeplitz_adj_convolution_kernel_signal_on_ai_spublic void test_toeplitz_adj_convolution_kernel_signal_on_ai_s() 
 - 
test_integ_oppublic void test_integ_op() 
 - 
test_integ_adjpublic void test_integ_adj() 
 - 
signpublic double sign(double x) 
 - 
deconvpublic void deconv(double[] x, double[] z, double[] diff_z, java.util.Vector<java.lang.Double> J, java.util.Vector<java.lang.Double> R, java.util.Vector<java.lang.Double> G, double[] y, double t_r, double[] hrf, double lbda, boolean early_stopping, double tol, int wind, int nb_iter, int nb_sub_iter, int verbose)
 - 
stdpublic double std(double[] x) 
 - 
deconv_examplepublic void deconv_example() 
 - 
hrf_fit_errpublic double hrf_fit_err(double theta, double[] z, double[] y, double t_r, double hrf_dur)
 - 
hrf_estimpublic void hrf_estim(double[] h, java.util.Vector<java.lang.Double> J, double[] z, double[] y, double t_r, double dur, int verbose)
 - 
simple_hrf_estimationpublic void simple_hrf_estimation() 
 - 
_loops_deconvpublic double[] _loops_deconv(double[] y, double[] diff_z, double[][] H, double lbda, long nb_iter, boolean early_stopping, long wind, double tol)
 - 
bdpublic void bd(java.util.Vector<java.lang.Double> xout, java.util.Vector<java.lang.Double> zout, java.util.Vector<java.lang.Double> diff_zout, java.util.Vector<java.lang.Double> hout, java.util.Vector<java.lang.Double> dr, java.util.Vector<java.lang.Double> dg, java.util.Vector<java.lang.Double> dJ, double[] y, double t_r, double lbda, double theta, double[] z_0, double hrf_dur, double[] bounds, int nb_iter, int nb_sub_iter, int nb_last_iter, int print_period, boolean early_stopping, int wind, double tol, int verbose)
 - 
blind_deconvolution_examplepublic void blind_deconvolution_example() 
 - 
inf_normprivate double inf_norm(double[] x) 
 - 
inf_normprivate double inf_norm(java.util.Vector<java.lang.Double> x) 
 - 
data_generation_examplepublic void data_generation_example() 
 
- 
 
-