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