def get_symops(self, data):
        """
        In order to generate symmetry equivalent positions, the symmetry
        operations are parsed. If the symops are not present, the space
        group symbol is parsed, and symops are generated.
        """
        symops = []
        for symmetry_label in ["_symmetry_equiv_pos_as_xyz",
                               "_symmetry_equiv_pos_as_xyz_",
                               "_space_group_symop_operation_xyz",
                               "_space_group_symop_operation_xyz_"]:
            if data.data.get(symmetry_label):
                xyz = data.data.get(symmetry_label)
                if isinstance(xyz, str):
                    msg = "A 1-line symmetry op P1 CIF is detected!"
                    warnings.warn(msg)
                    self.errors.append(msg)
                    xyz = [xyz]
                try:
                    symops = [SymmOp.from_xyz_string(s)
                              for s in xyz]
                    break
                except ValueError:
                    continue
        if not symops:
            # Try to parse symbol
            for symmetry_label in ["_symmetry_space_group_name_H-M",
                                   "_symmetry_space_group_name_H_M",
                                   "_symmetry_space_group_name_H-M_",
                                   "_symmetry_space_group_name_H_M_",
                                   "_space_group_name_Hall",
                                   "_space_group_name_Hall_",
                                   "_space_group_name_H-M_alt",
                                   "_space_group_name_H-M_alt_",
                                   "_symmetry_space_group_name_hall",
                                   "_symmetry_space_group_name_hall_",
                                   "_symmetry_space_group_name_h-m",
                                   "_symmetry_space_group_name_h-m_"]:
                sg = data.data.get(symmetry_label)

                if sg:
                    sg = sub_spgrp(sg)
                    try:
                        spg = space_groups.get(sg)
                        if spg:
                            symops = SpaceGroup(spg).symmetry_ops
                            msg = "No _symmetry_equiv_pos_as_xyz type key found. " \
                                    "Spacegroup from %s used." % symmetry_label
                            warnings.warn(msg)
                            self.errors.append(msg)
                            break
                    except ValueError:
                        # Ignore any errors
                        pass

                    try:
                        for d in _get_cod_data():
                            if sg == re.sub(r"\s+", "",
                                            d["hermann_mauguin"]):
                                xyz = d["symops"]
                                symops = [SymmOp.from_xyz_string(s)
                                          for s in xyz]
                                msg = "No _symmetry_equiv_pos_as_xyz type key found. " \
                                        "Spacegroup from %s used." % symmetry_label
                                warnings.warn(msg)
                                self.errors.append(msg)
                                break
                    except Exception as ex:
                        continue

                    if symops:
                        break
        if not symops:
            # Try to parse International number
            for symmetry_label in ["_space_group_IT_number",
                                   "_space_group_IT_number_",
                                   "_symmetry_Int_Tables_number",
                                   "_symmetry_Int_Tables_number_"]:
                if data.data.get(symmetry_label):
                    try:
                        i = int(str2float(data.data.get(symmetry_label)))
                        symops = SpaceGroup.from_int_number(i).symmetry_ops
                        break
                    except ValueError:
                        continue

        if not symops:
            msg = "No _symmetry_equiv_pos_as_xyz type key found. " \
                  "Defaulting to P1."
            warnings.warn(msg)
            self.errors.append(msg)
            symops = [SymmOp.from_xyz_string(s) for s in ['x', 'y', 'z']]

        return symops
def get_symops ( self , data ) : symops = [ ] for symmetry_label in [ "_symmetry_equiv_pos_as_xyz" , "_symmetry_equiv_pos_as_xyz_" , "_space_group_symop_operation_xyz" , "_space_group_symop_operation_xyz_" ] : if data . data . get ( symmetry_label ) : xyz = data . data . get ( symmetry_label ) if isinstance ( xyz , str ) : msg = "A 1-line symmetry op P1 CIF is detected!" warnings . warn ( msg ) self . errors . append ( msg ) xyz = [ xyz ] try : symops = [ SymmOp . from_xyz_string ( s ) for s in xyz ] break except ValueError : continue if not symops : for symmetry_label in [ "_symmetry_space_group_name_H-M" , "_symmetry_space_group_name_H_M" , "_symmetry_space_group_name_H-M_" , "_symmetry_space_group_name_H_M_" , "_space_group_name_Hall" , "_space_group_name_Hall_" , "_space_group_name_H-M_alt" , "_space_group_name_H-M_alt_" , "_symmetry_space_group_name_hall" , "_symmetry_space_group_name_hall_" , "_symmetry_space_group_name_h-m" , "_symmetry_space_group_name_h-m_" ] : sg = data . data . get ( symmetry_label ) if sg : sg = sub_spgrp ( sg ) try : spg = space_groups . get ( sg ) if spg : symops = SpaceGroup ( spg ) . symmetry_ops msg = "No _symmetry_equiv_pos_as_xyz type key found. " "Spacegroup from %s used." % symmetry_label warnings . warn ( msg ) self . errors . append ( msg ) break except ValueError : pass try : for d in _get_cod_data ( ) : if sg == re . sub ( r"\s+" , "" , d [ "hermann_mauguin" ] ) : xyz = d [ "symops" ] symops = [ SymmOp . from_xyz_string ( s ) for s in xyz ] msg = "No _symmetry_equiv_pos_as_xyz type key found. " "Spacegroup from %s used." % symmetry_label warnings . warn ( msg ) self . errors . append ( msg ) break except Exception as ex : continue if symops : break if not symops : for symmetry_label in [ "_space_group_IT_number" , "_space_group_IT_number_" , "_symmetry_Int_Tables_number" , "_symmetry_Int_Tables_number_" ] : if data . data . get ( symmetry_label ) : try : i = int ( str2float ( data . data . get ( symmetry_label ) ) ) symops = SpaceGroup . from_int_number ( i ) . symmetry_ops break except ValueError : continue if not symops : msg = "No _symmetry_equiv_pos_as_xyz type key found. " "Defaulting to P1." warnings . warn ( msg ) self . errors . append ( msg ) symops = [ SymmOp . from_xyz_string ( s ) for s in [ 'x' , 'y' , 'z' ] ] return symops
In order to generate symmetry equivalent positions, the symmetry
        operations are parsed. If the symops are not present, the space
        group symbol is parsed, and symops are generated.