def get_model(model_file=None, with_default=False): if model_file is not None: try: logger.info('Loading model from %s.' % model_file) model = BDModel.load(model_file) model.wl = 5635.0 return model except: raise Exception('Could not read model file %s.' % model_file) elif not with_default: logger.info('Using default model.') return default_model() else: raise Exception('No model_file and with_default=False, what do you want?')
def loadModel(self, model_file): if not path.exists(model_file): logger.warn('Initial model file not found (%s), guessing one. ' % model_file) x0 = (self.flux.shape[1] / 2.0) + 1.0 y0 = (self.flux.shape[0] / 2.0) + 1.0 pa, ell = ellipse_params(self.flux, x0, y0) r = distance(self.flux.shape, x0, y0, pa, ell) r = np.ma.array(r, mask=self.flux.mask) hlr = r50(self.flux, r) I_e = self.flux.max() * 0.1 r_e = 0.5 * hlr n = 2.0 I_0 = self.flux.max() * 0.1 h = 1.0 * hlr model = BDModel() model.wl = 5635.0 model.x0.setValue(x0) model.x0.setLimitsRel(10, 10) model.y0.setValue(y0) model.y0.setLimitsRel(10, 10) model.disk.I_0.setValue(I_0) model.disk.I_0.setLimits(0.0, 10.0 * I_0) model.disk.h.setValue(h) model.disk.h.setLimits(0.0, 5.0 * hlr) model.disk.PA.setValue(pa) model.disk.PA.setLimits(0.0, 180.0) model.disk.ell.setValue(ell) model.disk.ell.setLimits(0.0, 1.0) model.bulge.I_e.setValue(I_e) model.bulge.I_e.setLimits(1e-33, 3.0 * I_e) model.bulge.r_e.setValue(r_e) model.bulge.r_e.setLimits(1e-33, 2.5 * r_e) model.bulge.n.setValue(n, vmin=1.0, vmax=5.0) model.bulge.PA.setValue(pa) model.bulge.PA.setLimits(0.0, 180.0) model.bulge.ell.setValue(ell) model.bulge.ell.setLimits(0.0, 1.0) return model else: return BDModel.load(model_file)