示例#1
0
 def __str__(self):
     output = self.symbol
     if self._oxi_state >= 0:
         output += formula_double_format(self._oxi_state) + "+"
     else:
         output += formula_double_format(-self._oxi_state) + "-"
     return output
示例#2
0
 def __str__(self):
     output = self.symbol
     if self._oxi_state >= 0:
         output += formula_double_format(self._oxi_state) + "+"
     else:
         output += formula_double_format(-self._oxi_state) + "-"
     return output
示例#3
0
 def __str__(self):
     output = self.symbol
     if self._oxi_state >= 0:
         output += formula_double_format(self._oxi_state) + "+"
     else:
         output += formula_double_format(-self._oxi_state) + "-"
     for p, v in self._properties.items():
         output += "%s=%s" % (p, v)
     return output
示例#4
0
 def __str__(self):
     output = self.symbol
     if self._oxi_state >= 0:
         output += formula_double_format(self._oxi_state) + "+"
     else:
         output += formula_double_format(-self._oxi_state) + "-"
     for p, v in self._properties.items():
         output += "%s=%s" % (p, v)
     return output
示例#5
0
 def alphabetical_formula(self):
     """
     Returns a reduced formula string with appended charge
     """
     alph_formula = self._composition.alphabetical_formula
     chg_str = ""
     if self._charge > 0:
         chg_str = " +" + formula_double_format(self._charge, False)
     elif self._charge < 0:
         chg_str = " " + formula_double_format(self._charge, False)
     return alph_formula + chg_str
示例#6
0
文件: ion.py 项目: ATNDiaye/pymatgen
 def alphabetical_formula(self):
     """
     Returns a reduced formula string with appended charge
     """
     alph_formula = self._composition.alphabetical_formula
     chg_str = ""
     if self._charge > 0:
         chg_str = " +" + formula_double_format(self._charge, False)
     elif self._charge < 0:
         chg_str = " " + formula_double_format(self._charge, False)
     return alph_formula + chg_str
示例#7
0
 def formula(self):
     """
     Returns a formula string, with elements sorted by electronegativity,
     e.g., Li4 Fe4 P4 O16.
     """
     formula = self._composition.formula
     chg_str = ""
     if self._charge > 0:
         chg_str = " +" + formula_double_format(self._charge, False)
     elif self._charge < 0:
         chg_str = " " + formula_double_format(self._charge, False)
     return formula + chg_str
示例#8
0
文件: ion.py 项目: ATNDiaye/pymatgen
 def formula(self):
     """
     Returns a formula string, with elements sorted by electronegativity,
     e.g., Li4 Fe4 P4 O16.
     """
     formula = self._composition.formula
     chg_str = ""
     if self._charge > 0:
         chg_str = " +" + formula_double_format(self._charge, False)
     elif self._charge < 0:
         chg_str = " " + formula_double_format(self._charge, False)
     return formula + chg_str
示例#9
0
 def formula(self):
     """
     Returns a formula string, with elements sorted by electronegativity,
     e.g., Li4 Fe4 P4 O16.
     """
     sym_amt = self.get_el_amt_dict()
     syms = sorted(sym_amt.keys(), key=lambda sym: get_el_sp(sym).X)
     formula = [s + formula_double_format(sym_amt[s], False) for s in syms]
     return " ".join(formula)
示例#10
0
 def formula(self):
     """
     Returns a formula string, with elements sorted by electronegativity,
     e.g., Li4 Fe4 P4 O16.
     """
     sym_amt = self.get_el_amt_dict()
     syms = sorted(sym_amt.keys(), key=lambda sym: get_el_sp(sym).X)
     formula = [s + formula_double_format(sym_amt[s], False) for s in syms]
     return " ".join(formula)
示例#11
0
 def alphabetical_formula(self):
     """
     Returns a formula string, with elements sorted by alphabetically
     e.g., Fe4 Li4 O16 P4.
     """
     sym_amt = self.get_el_amt_dict()
     syms = sorted(sym_amt.keys())
     formula = [s + formula_double_format(sym_amt[s], False) for s in syms]
     return " ".join(formula)
示例#12
0
 def alphabetical_formula(self):
     """
     Returns a formula string, with elements sorted by alphabetically
     e.g., Fe4 Li4 O16 P4.
     """
     sym_amt = self.get_el_amt_dict()
     syms = sorted(sym_amt.keys())
     formula = [s + formula_double_format(sym_amt[s], False) for s in syms]
     return " ".join(formula)
示例#13
0
文件: ion.py 项目: ATNDiaye/pymatgen
 def reduced_formula(self):
     """
     Returns a reduced formula string with appended charge.
     """
     reduced_formula = self._composition.reduced_formula
     charge = self._charge / float(self._composition.
                                   get_reduced_composition_and_factor()[1])
     if charge > 0:
         if abs(charge) == 1:
             chg_str = "[+]"
         else:
             chg_str = "[" + formula_double_format(charge, False) + "+]"
     elif charge < 0:
         if abs(charge) == 1:
             chg_str = "[-]"
         else:
             chg_str = "[{}-]".format(formula_double_format(abs(charge),
                                                            False))
     else:
         chg_str = "(aq)"
     return reduced_formula + chg_str
示例#14
0
 def reduced_formula(self):
     """
     Returns a reduced formula string with appended charge.
     """
     reduced_formula = self._composition.reduced_formula
     charge = self._charge / float(
         self._composition.get_reduced_composition_and_factor()[1])
     if charge > 0:
         if abs(charge) == 1:
             chg_str = "[+]"
         else:
             chg_str = "[" + formula_double_format(charge, False) + "+]"
     elif charge < 0:
         if abs(charge) == 1:
             chg_str = "[-]"
         else:
             chg_str = "[{}-]".format(
                 formula_double_format(abs(charge), False))
     else:
         chg_str = "(aq)"
     return reduced_formula + chg_str
示例#15
0
 def formula(self):
     """
     Returns a formula string, with elements sorted by electronegativity,
     e.g., Li4 Fe4 P4 O16.
     """
     sym_amt = self.get_el_amt_dict()
     syms = sorted(sym_amt.keys(),
                   key=lambda s: smart_element_or_specie(s).X)
     formula = []
     for s in syms:
         if sym_amt[s] != 0:
             formula.append(s + formula_double_format(sym_amt[s], False))
     return " ".join(formula)
示例#16
0
 def formula(self):
     """
     Returns a formula string, with elements sorted by electronegativity,
     e.g., Li4 Fe4 P4 O16.
     """
     sym_amt = self.get_el_amt_dict()
     syms = sorted(sym_amt.keys(),
                   key=lambda s: smart_element_or_specie(s).X)
     formula = []
     for s in syms:
         if sym_amt[s] != 0:
             formula.append(s + formula_double_format(sym_amt[s], False))
     return " ".join(formula)
示例#17
0
def reduce_formula(sym_amt):
    """
    Helper method to reduce a sym_amt dict to a reduced formula and factor.

    Args:
        sym_amt (dict): {symbol: amount}.

    Returns:
        (reduced_formula, factor).
    """
    syms = sorted(sym_amt.keys(), key=lambda s: get_el_sp(s).X)

    syms = list(
        filter(lambda s: abs(sym_amt[s]) > Composition.amount_tolerance, syms))
    num_el = len(syms)
    contains_polyanion = (
        num_el >= 3 and
        get_el_sp(syms[num_el - 1]).X - get_el_sp(syms[num_el - 2]).X < 1.65)

    factor = 1
    # Enforce integers for doing gcd.
    if all((int(i) == i for i in sym_amt.values())):
        factor = abs(gcd(*(int(i) for i in sym_amt.values())))

    reduced_form = []
    n = num_el - 2 if contains_polyanion else num_el
    for i in range(0, n):
        s = syms[i]
        normamt = sym_amt[s] * 1.0 / factor
        reduced_form.append(s)
        reduced_form.append(formula_double_format(normamt))

    if contains_polyanion:
        poly_sym_amt = {
            syms[i]: sym_amt[syms[i]] / factor
            for i in range(n, num_el)
        }
        (poly_form, poly_factor) = reduce_formula(poly_sym_amt)

        if poly_factor != 1:
            reduced_form.append("({}){}".format(poly_form, int(poly_factor)))
        else:
            reduced_form.append(poly_form)

    reduced_form = "".join(reduced_form)

    return reduced_form, factor
示例#18
0
def reduce_formula(sym_amt):
    """
    Helper method to reduce a sym_amt dict to a reduced formula and factor.

    Args:
        sym_amt (dict): {symbol: amount}.

    Returns:
        (reduced_formula, factor).
    """
    syms = sorted(sym_amt.keys(),
                  key=lambda s: get_el_sp(s).X)

    syms = list(filter(lambda s: abs(sym_amt[s]) >
                       Composition.amount_tolerance, syms))
    num_el = len(syms)
    contains_polyanion = (num_el >= 3 and
                          get_el_sp(syms[num_el - 1]).X
                          - get_el_sp(syms[num_el - 2]).X < 1.65)

    factor = 1
    # Enforce integers for doing gcd.
    if all((int(i) == i for i in sym_amt.values())):
        factor = abs(gcd(*(int(i) for i in sym_amt.values())))

    reduced_form = []
    n = num_el - 2 if contains_polyanion else num_el
    for i in range(0, n):
        s = syms[i]
        normamt = sym_amt[s] * 1.0 / factor
        reduced_form.append(s)
        reduced_form.append(formula_double_format(normamt))

    if contains_polyanion:
        poly_sym_amt = {syms[i]: sym_amt[syms[i]] / factor
                        for i in range(n, num_el)}
        (poly_form, poly_factor) = reduce_formula(poly_sym_amt)

        if poly_factor != 1:
            reduced_form.append("({}){}".format(poly_form, int(poly_factor)))
        else:
            reduced_form.append(poly_form)

    reduced_form = "".join(reduced_form)

    return reduced_form, factor
示例#19
0
def reduce_formula(sym_amt):
    """
    Help method to reduce a sym_amt dict to a reduced formula and factor.

    Args:
        Dict of the form {symbol: amount}.

    Returns:
        (reduced_formula, factor).
    """
    syms = sorted(sym_amt.keys(), key=lambda s: smart_element_or_specie(s).X)

    syms = filter(lambda s: sym_amt[s] > Composition.amount_tolerance, syms)
    num_el = len(syms)
    contains_polyanion = (num_el >= 3
                          and smart_element_or_specie(syms[num_el - 1]).X -
                          smart_element_or_specie(syms[num_el - 2]).X < 1.65)

    factor = reduce(gcd, sym_amt.values())
    reduced_form = []
    n = num_el - 2 if contains_polyanion else num_el
    for i in range(0, n):
        s = syms[i]
        normamt = sym_amt[s] * 1.0 / factor
        reduced_form.append(s)
        reduced_form.append(formula_double_format(normamt))

    if contains_polyanion:
        poly_sym_amt = {
            syms[i]: sym_amt[syms[i]] / factor
            for i in range(n, num_el)
        }
        (poly_form, poly_factor) = reduce_formula(poly_sym_amt)

        if poly_factor != 1:
            reduced_form.append("({}){}".format(poly_form, int(poly_factor)))
        else:
            reduced_form.append(poly_form)

    reduced_form = "".join(reduced_form)

    return reduced_form, factor
示例#20
0
def reduce_formula(sym_amt):
    """
    Help method to reduce a sym_amt dict to a reduced formula and factor.

    Args:
        Dict of the form {symbol: amount}.

    Returns:
        (reduced_formula, factor).
    """
    syms = sorted(sym_amt.keys(),
                  key=lambda s: smart_element_or_specie(s).X)

    syms = filter(lambda s: sym_amt[s] > Composition.amount_tolerance,
                  syms)
    num_el = len(syms)
    contains_polyanion = (num_el >= 3 and
                          smart_element_or_specie(syms[num_el - 1]).X
                          - smart_element_or_specie(syms[num_el - 2]).X < 1.65)

    factor = reduce(gcd, sym_amt.values())
    reduced_form = []
    n = num_el - 2 if contains_polyanion else num_el
    for i in range(0, n):
        s = syms[i]
        normamt = sym_amt[s] * 1.0 / factor
        reduced_form.append(s)
        reduced_form.append(formula_double_format(normamt))

    if contains_polyanion:
        poly_sym_amt = {syms[i]: sym_amt[syms[i]] / factor
                        for i in range(n, num_el)}
        (poly_form, poly_factor) = reduce_formula(poly_sym_amt)

        if poly_factor != 1:
            reduced_form.append("({}){}".format(poly_form, int(poly_factor)))
        else:
            reduced_form.append(poly_form)

    reduced_form = "".join(reduced_form)

    return reduced_form, factor
示例#21
0
 def __str__(self):
     return " ".join([
         "{}{}".format(k, formula_double_format(v, ignore_ones=False))
         for k, v in self.to_dict.items()
     ])
示例#22
0
 def test_formula_double_format(self):
     self.assertEqual(formula_double_format(1.00), "")
     self.assertEqual(formula_double_format(2.00), "2")
     self.assertEqual(formula_double_format(2.10), "2.1")
示例#23
0
 def __str__(self):
     return " ".join([
         "{}{}".format(k, formula_double_format(v, ignore_ones=False))
         for k, v in self.as_dict().items()])
示例#24
0
 def test_formula_double_format(self):
     self.assertEqual(formula_double_format(1.00), "")
     self.assertEqual(formula_double_format(2.00), "2")
     self.assertEqual(formula_double_format(2.10), "2.1")