示例#1
0
def read_monomer_rules(rule_file):
    input_file = open(rule_file, 'r')
    lines = input_file.readlines()
    Monomer_rule_list = []
    for i in range(len(lines)):
        if '#' in lines[i]:
            rule_name = lines[i]
            rule_name = rule_name.strip('# ')
            rule_neighbor_order = int(lines[i + 1])
            rule_neighbor_arrangement = lines[i + 2].strip()
            rule_home_atom_list = lines[i + 3].split()
            rule_home_atom_list = [
                int(i) for i in rule_home_atom_list
            ]  ###### still part of the ugly thing I don't like
            rule_neighbor_atom_list = lines[i + 4].split()
            rule_neighbor_atom_list = [
                int(i) for i in rule_neighbor_atom_list
            ]  ###### still part of the ugly thing I don't like
            rule_phase = lines[i + 5].strip()
            rule_plane = lines[i + 6].strip()
            Monomer_rule = clusters.ClusterObj(rule_name, rule_neighbor_order,
                                               rule_neighbor_arrangement,
                                               rule_home_atom_list,
                                               rule_neighbor_atom_list,
                                               rule_phase, rule_plane)
            Monomer_rule_list.append(Monomer_rule)
    input_file.close()
    return Monomer_rule_list
def write_cluster_rules(rule_file):
    output = open(rule_file, 'w')
    new_rule = True
    while new_rule == True:
        Cluster_rule = clusters.ClusterObj()
        Cluster_rule.create_rule()
        output.write('# ' + str(Cluster_rule.name) + '\n')
        output.write(str(Cluster_rule.neighbor_order) + '\n')
        output.write(str(Cluster_rule.neighbor_arrangement) + '\n')
        output.write(str(Cluster_rule.home_atom_list) + '\n')
        output.write(str(Cluster_rule.neighbor_atom_list) + '\n')
        output.write(str(Cluster_rule.phase) + '\n')
        output.write(str(Cluster_rule.plane) + '\n')
        output.write(str(Cluster_rule.composition) + '\n')
        if input('Add another rule? (Y/N):  ') == 'N':
            new_rule = False
    output.close()
def read_cluster_rules(rule_file):
    input_file = open(rule_file, 'r')
    lines = input_file.readlines()
    Cluster_rule_list = []
    for i in range(len(lines)):
        if '#' in lines[i]:
            Cluster_rule = clusters.ClusterObj()
            name = lines[i]
            Cluster_rule.set_name(name.strip('# '))
            Cluster_rule.set_neighbor_order(int(lines[i + 1]))
            Cluster_rule.set_neighbor_arrangement(lines[i + 2].strip())
            Cluster_rule.set_home_atom_list(lines[i + 3].split())
            Cluster_rule.set_neighbor_atom_list(lines[i + 4].split())
            Cluster_rule.set_phase(lines[i + 5].strip())
            Cluster_rule.set_plane(lines[i + 6].strip())
            Cluster_rule_list.append(Cluster_rule)
    input_file.close()
    return Cluster_rule_list