in source/src/molecule-unfolding/utility/ResultProcess.py [0:0]
def save_mol_file(self, save_name):
logging_info(f"save_mol_file {save_name}")
raw_f = open(self.mol_file_name, "r")
lines = raw_f.readlines()
start_parse = 0
def _update_atom_pos(line, atom_pos_data):
atom_idx_name = re.findall(r"\d+ [A-Z]\d+", line)[0]
logging.debug("atom id name is {}".format(atom_idx_name))
atom_idx = atom_idx_name.split(' ')[0]
regrex = re.compile(
r"[-+]?\d+\.\d+ +[-+]?\d+\.\d+ +[-+]?\d+\.\d+", re.IGNORECASE)
update_pos_x = atom_pos_data[atom_idx]['pts'][0]
update_pos_y = atom_pos_data[atom_idx]['pts'][1]
update_pos_z = atom_pos_data[atom_idx]['pts'][2]
update_pos = "{} {} {}".format(
update_pos_x, update_pos_y, update_pos_z)
update_line = regrex.sub(update_pos, line)
return update_line
mol_save_name = f"{self.mol_file_name.split('mol2')[0][:-1]}_{self.method}_{save_name}.mol2"
file_save_name = f"{self.mol_file_name.split('mol2')[0][:-1]}_{self.method}_{save_name}.json"
update_f = open(mol_save_name, 'w')
for line in lines:
logging.debug(line)
if line.startswith("@<TRIPOS>BOND"):
logging.debug("finish atom part")
start_parse = 0
if start_parse == 1:
update_line = _update_atom_pos(line, self.atom_pos_data)
update_f.write(update_line)
else:
update_f.write(line)
if line.startswith("@<TRIPOS>ATOM"):
logging.debug("found atom start position")
start_parse = 1
raw_f.close()
update_f.close()
# update_parameters
with open(file_save_name, "w") as outfile:
json.dump(self.parameters, outfile)
logging_info(f"finish save {mol_save_name} and {file_save_name}")
return [mol_save_name, file_save_name]