Commit 70b5b7cd by Martin Reinecke

### first iteration

parent 0c5937f2
 from point_separation import build_problem, problem_iteration from nifty2go import * import nifty4 as ift import numpy as np from matplotlib import rc rc('font',**{'family':'serif','serif':['Palatino']}) ... ... @@ -8,15 +8,15 @@ from matplotlib import pyplot as plt np.random.seed(42) if __name__ == '__main__': s_space = RGSpace([1024]) FFT = FFTOperator(s_space) s_space = ift.RGSpace([1024]) FFT = ift.FFTOperator(s_space) h_space = FFT.target[0] p_space = PowerSpace(h_space) sp = Field(p_space, val=1./(1+p_space.k_lengths)**2.5 ) sh = power_synthesize(sp) p_spec = lambda k: (1./(1+k)**2.5) S = ift.create_power_operator(h_space, power_spectrum=p_spec) sh = S.draw_sample() s = FFT.adjoint_times(sh) u = Field(s_space, val = -12) u = ift.Field(s_space, val = -12) u.val[200] = 1 u.val[300] = 3 u.val[500] = 4 ... ... @@ -27,7 +27,7 @@ if __name__ == '__main__': u.val[652] = 1 u.val[1002] = 2.5 d = exp(s) + exp(u) d = ift.exp(s) + ift.exp(u) data = d.val energy1 = build_problem(data,1.25) ... ... @@ -45,17 +45,17 @@ if __name__ == '__main__': f, (ax0, ax1,ax2) = plt.subplots(3, sharex=True, sharey=True) plt.suptitle('diffuse components', size=size) ax0.plot(exp(energy1.s).val, 'k-') ax0.plot(ift.exp(energy1.s).val, 'k-') ax0.yaxis.set_label_position("right") ax0.set_ylabel(r'$\alpha = 1.25$', size=size) ax0.set_ylim(1e-1,1e3) ax0.set_yscale("log") ax1.plot(exp(energy2.s).val, 'k-') ax1.plot(ift.exp(energy2.s).val, 'k-') ax1.yaxis.set_label_position("right") ax1.set_ylabel(r'$\alpha = 1.5$', size=size) ax2.plot(exp(energy3.s).val, 'k-') ax2.plot(ift.exp(energy3.s).val, 'k-') ax2.yaxis.set_label_position("right") ax2.set_ylabel(r'$\alpha = 1.75$', size=size) ... ... @@ -66,17 +66,17 @@ if __name__ == '__main__': plt.suptitle('point-like components', size=size) ax0.plot(exp(energy1.u).val, 'k-') ax0.plot(ift.exp(energy1.u).val, 'k-') ax0.yaxis.set_label_position("right") ax0.set_ylabel(r'$\alpha = 1.25$', size=size) ax0.set_ylim(1e-1,1e3) ax0.set_yscale("log") ax1.plot(exp(energy2.u).val, 'k-') ax1.plot(ift.exp(energy2.u).val, 'k-') ax1.yaxis.set_label_position("right") ax1.set_ylabel(r'$\alpha = 1.5$', size=size) ax2.plot(exp(energy3.u).val, 'k-') ax2.plot(ift.exp(energy3.u).val, 'k-') ax2.yaxis.set_label_position("right") ax2.set_ylabel(r'$\alpha = 1.75$', size=size) ... ... @@ -97,10 +97,10 @@ if __name__ == '__main__': ax0.set_ylabel(r'data', size=size) ax1.plot(exp(s).val, 'k-') ax1.plot(ift.exp(s).val, 'k-') ax1.yaxis.set_label_position("right") ax1.set_ylabel(r'diffuse', size=size) ax2.plot(exp(u).val, 'k-') ax2.plot(ift.exp(u).val, 'k-') ax2.yaxis.set_label_position("right") ax2.set_ylabel(r'point-like', size=size) ... ...
 from point_separation import build_problem, problem_iteration, load_data from nifty2go import * from nifty4 import * import numpy as np from matplotlib import rc rc('font',**{'family':'serif','serif':['Palatino']}) ... ...
 from nifty2go import * import nifty4 as ift import numpy as np # from matplotlib import pyplot as plt from astropy.io import fits from separation_energy import SeparationEnergy from nifty2go.library.nonlinearities import PositiveTanh from nifty4.library.nonlinearities import PositiveTanh def load_data(path): ... ... @@ -17,22 +17,21 @@ def load_data(path): return data def build_problem(data, alpha): s_space = RGSpace(data.shape, distances=len(data.shape) * [1]) data = Field(s_space,val=data) FFT = FFTOperator(s_space) s_space = ift.RGSpace(data.shape, distances=len(data.shape) * [1]) data = ift.Field(s_space,val=data) FFT = ift.FFTOperator(s_space) h_space = FFT.target[0] binbounds = PowerSpace.useful_binbounds(h_space, logarithmic = False) p_space = PowerSpace(h_space, binbounds=binbounds) initial_spectrum = power_analyze(FFT(log(data)), binbounds=p_space.binbounds) initial_correlation = create_power_operator(h_space, initial_spectrum) initial_x = Field(s_space, val=-1.) alpha = Field(s_space, val=alpha) q = Field(s_space, val=10e-40) binbounds = ift.PowerSpace.useful_binbounds(h_space, logarithmic = False) p_space = ift.PowerSpace(h_space, binbounds=binbounds) initial_spectrum = ift.power_analyze(FFT(ift.log(data)), binbounds=p_space.binbounds) initial_correlation = ift.create_power_operator(h_space, initial_spectrum) initial_x = ift.Field(s_space, val=-1.) alpha = ift.Field(s_space, val=alpha) q = ift.Field(s_space, val=10e-40) pos_tanh = PositiveTanh() ICI = GradientNormController(verbose=False, name="ICI", iteration_limit=500, ICI = ift.GradientNormController(iteration_limit=500, tol_abs_gradnorm=1e-5) inverter = ConjugateGradient(controller=ICI) inverter = ift.ConjugateGradient(controller=ICI) parameters = dict(data=data, correlation=initial_correlation, alpha=alpha, q=q, ... ... @@ -41,15 +40,15 @@ def build_problem(data, alpha): return separationEnergy def problem_iteration(energy, iterations=3): controller = GradientNormController(verbose=True, tol_abs_gradnorm=0.00000001, iteration_limit=iterations) minimizer = RelaxedNewton(controller=controller) controller = ift.GradientNormController(name="test1", tol_abs_gradnorm=0.00000001, iteration_limit=iterations) minimizer = ift.RelaxedNewton(controller=controller) energy, convergence = minimizer(energy) new_position = energy.position h_space = energy.correlation.domain[0] FFT = energy.FFT binbounds = PowerSpace.useful_binbounds(h_space, logarithmic=False) new_power = power_analyze(FFT(energy.s), binbounds=binbounds) new_correlation = create_power_operator(h_space, new_power) binbounds = ift.PowerSpace.useful_binbounds(h_space, logarithmic=False) new_power = ift.power_analyze(FFT(energy.s), binbounds=binbounds) new_correlation = ift.create_power_operator(h_space, new_power) new_parameters = energy.parameters new_parameters['correlation'] = new_correlation new_energy = SeparationEnergy(new_position, new_parameters) ... ...
 from nifty2go import Energy, Field, log, exp, DiagonalOperator from nifty2go.library import WienerFilterCurvature from nifty4 import Energy, Field, log, exp, DiagonalOperator from nifty4.library import WienerFilterCurvature class SeparationEnergy(Energy): ... ...
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!