def parse(self): self.names = [] self.adp_frac = {} self.adp_error_frac = {} self.adp_cart = {} self.adp_error_cart = {} self.frac = {} self.cart = {} self.element = {} self.cif = CIF(self.filename) self.cell = self.cif.cell self.T = value(self.cif['_diffrn_ambient_temperature']) for atomname, values in self.cif.positions.items(): self.names.append(atomname) self.frac[atomname] = values['frac'] self.cart[atomname] = frac2cart(values['frac'], self.cell) self.element[atomname] = values['element'] if atomname in self.cif.atoms.keys(): self.adp_frac[atomname] = self.cif.atoms[atomname]['adp'] self.adp_error_frac[atomname] = self.cif.atoms[atomname]['adp_error'] self.adp_cart[atomname] = frac2cart_ADP(self.cif.atoms[atomname]['adp'], self.cell) try: self.adp_error_cart[atomname] = frac2cart_ADP(self.cif.atoms[atomname]['adp_error'], self.cell) except TypeError: self.adp_error_cart[atomname] = None else: self.adp_error_frac[atomname] = None self.adp_frac[atomname] = None self.adp_error_cart[atomname] = None self.adp_cart[atomname] = None
def _parse_atoms(self): self.cart = {} self.frac = {} self.adp_cart = {} self.adp_frac = {} self.adp_iso_frac = {} self.element = {} self.names = [] for name, atom in self.atoms.items(): atom.parse() atom.build() self.cart[name] = atom.get_cart() self.frac[name] = atom.get_frac() adp = atom.get_adp_frac() if len(adp) == 6: self.adp_frac[name] = adp self.adp_cart[name] = frac2cart_ADP(adp, self.cell) else: self.adp_frac[name] = None self.adp_cart[name] = None self.adp_iso_frac[name] = adp self.names.append(name) self.element[name] = atom.get_element() # if self.bedeInstructions or self.loneInstructions: # self.buildConnectionTable() for name, atom in self.atoms.items(): self.findBEDEInstructions(name, atom)
def __add__(self, atom): new_atom = copy(atom) oldfrac = new_atom.get_frac() newfrac = dot(oldfrac, self.matrix) + self.trans newfrac = array(*newfrac[0,].tolist()) new_atom.set_frac(newfrac.flatten().tolist()) newcart = frac2cart(newfrac, atom.molecule.get_cell()) new_atom.cart = newcart new_atom.set_name(new_atom.get_name() + '_' + str(self.ID)) try: old_adp = ADP_to_matrix(new_atom.adp['cart_meas']) new_adp = dot(self.matrix.transpose(), old_adp) new_adp = dot(new_adp, self.matrix) new_adp = ADP_to_XD_list(new_adp) new_atom.adp['cart_meas'] = new_adp new_adp_frac = frac2cart_ADP(new_adp, atom.molecule.get_cell()) new_atom.adp['frac_meas'] = new_adp_frac except ADPDataError: pass return new_atom
def get_adp_cart(self): adp = [self.adp_frac[0], self.adp_frac[1], self.adp_frac[2], self.adp_frac[5], self.adp_frac[4], self.adp_frac[3]] return frac2cart_ADP(adp, self.cell)
def get_adp_cart(self): return frac2cart_ADP(self.adp_frac, self.cell)