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: approximateField', (vals)) inputImg = self.inputs['input'] try: self.outputs['output'] = libbis.approximateDisplacementFieldWASM2( inputImg, { "spacing": (vals['spacing']), "steps": (vals['steps']), "stepsize": (vals['stepsize']), "lambda": (vals['lambda']), "iterations": (vals['iterations']), "tolerance": (vals['tolerance']), 'optimization': bis_baseutils.getOptimizationCode(vals['optimization']), "windowsize": (vals['windowsize']), "levels": (vals['levels']), "resolution": (vals['resolution']), "inverse": self.parseBoolean(vals['inverse']), }, self.parseBoolean(vals['debug'])) except: print( '---- Failed to invoke algorithm nonlinear component of module' ) 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