def directInvokeAlgorithm(self,vals): print('oooo invoking: nonLinearRegistration', (vals)); target = self.inputs['target']; reference = self.inputs['reference']; transform = self.inputs['initial']; linearmode = bis_baseutils.getLinearModeCode(vals['linearmode']); initial=transform; if (linearmode>=0): try: mat=libbis.runLinearRegistrationWASM(reference, target, transform, { 'intscale' : vals['intscale'], 'numbins' : vals['numbins'], 'levels' : vals['levels'], 'smoothing' : vals['extrasmoothing'], 'optimization' : bis_baseutils.getOptimizationCode(vals['optimization']), 'stepsize' : vals['stepsize'], 'metric' : bis_baseutils.getMetricCode(vals['metric']), 'steps' : vals['steps'], 'iterations' : vals['iterations'], 'normalize' : self.parseBoolean(vals['norm']), 'debug' : self.parseBoolean(vals['debug']), 'mode' : linearmode, 'resolution' : vals['resolution'], 'return_vector' : False}, self.parseBoolean(vals['debug'])); initial=bis_objects.bisLinearTransformation(); initial.create(mat); except: print('Failed to invoke linear registration algorithm.'); return False; try: self.outputs['output']=libbis.runNonLinearRegistrationWASM(reference, target, initial, { 'cps' : vals['cps'], 'lambda' : vals['lambda'], 'intscale' : vals['intscale'], 'numbins' : vals['numbins'], 'levels' : vals['levels'], 'smoothing' : vals['extrasmoothing'], 'optimization' : bis_baseutils.getOptimizationCode(vals['optimization']), 'stepsize' : vals['stepsize'], 'debug' : self.parseBoolean(vals['debug']), 'normalize' : self.parseBoolean(vals['norm']), 'metric' : bis_baseutils.getMetricCode(vals['metric']), 'steps' : vals['steps'], 'iterations' : vals['iterations'], 'resolution' : vals['resolution']}, self.parseBoolean(vals['debug'])); if (self.parseBoolean(vals['doreslice'])==True): self.outputs['resliced']=bis_baseutils.resliceRegistrationOutput(libbis,reference, target,self.outputs['output']); except: print('---- Failed to invoke nonlinear registration algorithm.'); return False return True
def directInvokeAlgorithm(self, vals): print('oooo invoking: linearRegistration', (vals)) target = self.inputs['target'] reference = self.inputs['reference'] transform = self.inputs['initial'] if (reference.hasSameOrientation(target, 'Reference Image', 'Target Image', True) == False): return False try: out = libbis.runLinearRegistrationWASM( reference, target, transform, { 'intscale': vals['intscale'], 'numbins': vals['numbins'], 'levels': vals['levels'], 'smoothing': vals['imagesmoothing'], 'optimization': bis_baseutils.getOptimizationCode(vals['optimization']), 'stepsize': vals['stepsize'], 'metric': bis_baseutils.getMetricCode(vals['metric']), 'steps': vals['steps'], 'normalize': self.parseBoolean(vals['norm']), 'debug': self.parseBoolean(vals['debug']), 'iterations': vals['iterations'], 'mode': bis_baseutils.getLinearModeCode(vals['mode']), 'resolution': vals['resolution'], 'return_vector': False }, self.parseBoolean(vals['debug'])) self.outputs['output'] = bis_objects.bisLinearTransformation() self.outputs['output'].create(out) if (self.parseBoolean(vals['doreslice']) == True): self.outputs[ 'resliced'] = bis_baseutils.resliceRegistrationOutput( libbis, reference, target, self.outputs['output']) except: e = sys.exc_info()[0] print('---- Failed to invoke algorithm', e) return False return True