interp_op=SEP.op_oc_serial.operator("Interp.x")
reg =SEP.op_oc_serial.operator("reg.x")
We then extend the solver object.
We require the operator op and regularization operator
reg.
(n1,o1,d1).
class solver(SEP.solv_reg.solver):
def __init__(self,op,reg):
SEP.solv_reg.solver.__init__("SOLVER")
self.add_param("op",op)
self.add_param("reg",reg)
We require the user to specify
the model model, the data data,
def add_doc_params(self):
self.add_doc_param("eps",1.,"Epsilon")
self.add_doc_param("niter",1,"Number of iterations")
self.add_doc_param("model",doc="Model (output)")
self.add_doc_param("data",doc="Data (input)")
self.add_doc_param("n1",doc="number of samples (axis 1)")
self.add_doc_param("o1",doc="First sample (axis 1)")
self.add_doc_param("d1",doc="Sampling (axis 1)")
We create the data vector from a file
and create the model vector.
def prep_run(self,restart=None):
self.add_param("data",SEP.vec_sfloat.vector(tag="data"))
self.add_param("model",SEP.vec_sfloat.vector(name="model"))
self.param("model").set_axis(1, self.param("n1").
self.param("o1",self.param("d1")))
self.param("model").zero()
We add the domain and range vectors for the operator
and the regularization operator.
self.param("op").add_param("domain",self.main.param("model"))
self.param("op").add_param("range",self.main.param("data"))
self.param("reg").add_param("domain",self.main.param("model"))
self.param("reg").add_param("range",self.main.param("model"))
Finally we create the step operator and run the prep_run
function for the operators and the regularization solver.
self.add_param("cgstep",SEP.cgstep.cgstep("cgstep"))
self.param("op").prep_run(restart)
self.param("reg").prep_run(restart)
SEP.solv_reg.solver.prep_run(self,restart)
We create the solver object, the program object, read the parameters, and run the job.
solv=solver(interp_op,reg_op)
program=SEP.opt_prog.prog("Interpolate ",
"Interp.py model= data= ",
[interp_op,reg_op,solv],
["Interpolatation using the SEP python library"])
program.get_options()
program.prep_run()