def get_string(self, sort_keys=False, pretty=False): """ Returns a string representation of the Tags. The reason why this method is different from the __str__ method is to provide options for pretty printing. Args: sort_keys: Set to True to sort the Feff parameters alphabetically. Defaults to False. pretty: Set to True for pretty aligned output. Defaults to False. Returns: String representation of Tags. """ keys = self.keys() if sort_keys: keys = sorted(keys) lines = [] for k in keys: if isinstance(self[k], list): lines.append([k, " ".join([str(i) for i in self[k]])]) else: lines.append([k, self[k]]) if pretty: return tabulate(lines) else: return str_delimited(lines, None, " ")
def get_string(self, sort_keys=True, pretty=True): """ Returns a string representation of the Feff_tag file. The reason why this method is different from the __str__ method is to provide options for pretty printing. Args: sort_keys: Set to True to sort the Feff parameters alphabetically. Defaults to False. pretty: Set to True for pretty aligned output, False for no. Returns: String representation of FeffTags. """ keys = self.keys() if sort_keys: keys = sorted(keys) lines = [] for k in keys: if isinstance(self[k], list): lines.append([k, " ".join([str(i) for i in self[k]])]) else: lines.append([k, self[k]]) if pretty: return str_aligned(lines) else: return str_delimited(lines, None, " ")
def get_string(self, pretty=False): """ Returns a string representation of self. The reason why this method is different from the __str__ method is to provide options for pretty printing. Args: pretty: Set to True for pretty aligned output. """ lines = [] app = lines.append # Write the Abinit objects first. for obj in self.abiobjects: app([80*"#", ""]) app(["#", "%s" % obj.__class__.__name__]) app([80*"#", ""]) for (k, v) in obj.to_abivars().items(): app(self._format_kv(k, v)) # Extra variables. if self.extra_abivars: app([80*"#", ""]) app(["#", "Extra_Abivars"]) app([80*"#", ""]) for (k, v) in self.extra_abivars.items(): app(self._format_kv(k, v)) if pretty: return str_aligned(lines, header=None) else: return str_delimited(lines, header=None, delimiter=5*" ")
def get_string(self, pretty=False): """ Returns a string representation of self. The reason why this method is different from the __str__ method is to provide options for pretty printing. Args: pretty: Set to True for pretty aligned output. """ lines = [] app = lines.append # Write the Abinit objects first. for obj in self.abiobjects: app([80 * "#", ""]) app(["#", "%s" % obj.__class__.__name__]) app([80 * "#", ""]) for (k, v) in obj.to_abivars().items(): app(self._format_kv(k, v)) # Extra variables. if self.extra_abivars: app([80 * "#", ""]) app(["#", "Extra_Abivars"]) app([80 * "#", ""]) for (k, v) in self.extra_abivars.items(): app(self._format_kv(k, v)) if pretty: return str_aligned(lines, header=None) else: return str_delimited(lines, header=None, delimiter=5 * " ")
def get_string(self, sort_keys=False, pretty=False): """ Returns a string representation of the INCAR. The reason why this method is different from the __str__ method is to provide options for pretty printing. Args: sort_keys: Set to True to sort the INCAR parameters alphabetically. Defaults to False. pretty: Set to True for pretty aligned output. Defaults to False. """ keys = self.keys() if sort_keys: keys = sorted(keys) lines = [] for k in keys: if k == "MAGMOM" and isinstance(self[k], list): value = [] for m, g in itertools.groupby(self[k]): value.append("{}*{}".format(len(tuple(g)), m)) lines.append([k, " ".join(value)]) elif isinstance(self[k], list): lines.append([k, " ".join([str(i) for i in self[k]])]) else: lines.append([k, self[k]]) if pretty: return str_aligned(lines) else: return str_delimited(lines, None, " = ")
def test_str_aligned_delimited(self): data = [["a", "bb"], ["ccc", "dddd"]] ans = """ a bb ccc dddd""" self.assertEqual(str_aligned(data), ans) self.assertEqual(str_aligned(data, header=["X", "Y"]), ' X Y\n----------\n a bb\nccc dddd') self.assertEqual(str_delimited(data), 'a\tbb\nccc\tdddd')
def get_string(self, pretty=False): """ Returns a string representation of self. The reason why this method is different from the __str__ method is to provide options for pretty printing. Args: pretty: Set to True for pretty aligned output. """ lines = [] app = lines.append # extra_abivars can contain variables that are already defined # in the object. In this case, the value in extra_abivars is used # TODO: Should find a more elegant way to avoid collission between objects # and extra_abivars extra_abivars = self.extra_abivars.copy() # Write the Abinit objects first. for obj in self.abiobjects: #print(obj) app([80*"#", ""]) app(["#", "%s" % obj.__class__.__name__]) app([80*"#", ""]) for (k, v) in obj.to_abivars().items(): v = extra_abivars.pop(k, v) app(self._format_kv(k, v)) # Extra variables. if self.extra_abivars: app([80*"#", ""]) app(["#", "Extra_Abivars"]) app([80*"#", ""]) for (k, v) in extra_abivars.items(): app(self._format_kv(k, v)) #lines = self._cut_lines(lines) if pretty: return str_aligned(lines, header=None) else: return str_delimited(lines, header=None, delimiter=5*" ")
def get_string(self, sort_keys=False, pretty=False): """ Returns a string representation of the Tags. The reason why this method is different from the __str__ method is to provide options for pretty printing. Args: sort_keys: Set to True to sort the Feff parameters alphabetically. Defaults to False. pretty: Set to True for pretty aligned output. Defaults to False. Returns: String representation of Tags. """ keys = self.keys() if sort_keys: keys = sorted(keys) lines = [] for k in keys: if isinstance(self[k], dict): if k in ["ELNES", "EXELFS"]: lines.append([k, self._stringify_val(self[k]["ENERGY"])]) beam_energy = self._stringify_val(self[k]["BEAM_ENERGY"]) beam_energy_list = beam_energy.split() if int(beam_energy_list[1]) == 0: # aver=0, specific beam direction lines.append([beam_energy]) lines.append([self._stringify_val(self[k]["BEAM_DIRECTION"])]) else: # no cross terms for orientation averaged spectrum beam_energy_list[2] = str(0) lines.append([self._stringify_val(beam_energy_list)]) lines.append([self._stringify_val(self[k]["ANGLES"])]) lines.append([self._stringify_val(self[k]["MESH"])]) lines.append([self._stringify_val(self[k]["POSITION"])]) else: lines.append([k, self._stringify_val(self[k])]) if pretty: return tabulate(lines) else: return str_delimited(lines, None, " ")