def __init__(self): super(DataStore, self).__init__() self.data_objects = OrderedDict() # create the default theoretical dataset q = np.linspace(0.005, 0.5, 1000) r = np.empty_like(q) dataset = ReflectDataset() dataset.data = (q, r) dataset.name = "theoretical" air = SLD(0, name="fronting") sio2 = SLD(3.47, name="1") si = SLD(2.07, name="backing") structure = air(0, 0) | sio2(15, 3.0) | si(0, 3.0) structure[1].name = "slab" structure[1].thick.name = "thick" structure[1].rough.name = "rough" structure[1].sld.real.name = "sld" structure[1].sld.imag.name = "isld" structure[1].vfsolv.name = "vfsolv" model = ReflectModel(structure, name="theoretical") self.add(dataset) self["theoretical"].model = model
def __init__(self): super(DataStore, self).__init__() self.data_objects = OrderedDict() # create the default theoretical dataset q = np.linspace(0.005, 0.5, 1000) r = np.empty_like(q) dataset = ReflectDataset() dataset.data = (q, r) dataset.name = 'theoretical' air = SLD(0, name='fronting') sio2 = SLD(3.47, name='1') si = SLD(2.07, name='backing') structure = air(0, 0) | sio2(15, 3.) | si(0, 3.) structure[1].name = 'slab' structure[1].thick.name = 'thick' structure[1].rough.name = 'rough' structure[1].sld.real.name = 'sld' structure[1].sld.imag.name = 'isld' structure[1].vfsolv.name = 'vfsolv' model = ReflectModel(structure, name='theoretical') self.add(dataset) self['theoretical'].model = model
def snapshot(self, snapshot_name): original = self.datastore["theoretical"] dataset = ReflectDataset() dataset.data = ( original.dataset.x, original.model.model(original.dataset.x, x_err=dataset.x_err), ) dataset.name = snapshot_name new_model = deepcopy(original.model) new_model.name = snapshot_name # if the snapshot already exists then overwrite it. if snapshot_name in self.datastore.names: row = self.data_object_row(snapshot_name) self._rootnode.child(row).set_dataset(dataset) self._rootnode.child(row).set_reflect_model(new_model) data_object = self.data_object_node(snapshot_name).data_object else: # otherwise you have to add it. data_object = DataObject(dataset) data_object.model = new_model self._rootnode.set_data_object(data_object) return data_object