Source code for rgpycrumbs.xts.saddle.cuh2

import ast
import re
import subprocess
from pathlib import Path

import ase
import ase.io
import matplotlib.pyplot as plt
import numpy as np
from pypotlib.systems import cu_slab_h2 as cuh2slab
from pyprotochemgp.systems.cuh2slab import prepare_scatter_points

from rgpycrumbs._aux import get_gitroot, getstrform
from rgpycrumbs.xts.cuh2.datgen import get_from_gitroot_con

[docs] TRUE_E_DAT = get_from_gitroot_con( fname="cuh2.con", hh_range=cuh2slab.PltRange(low=-0.05, high=5), h2slab_range=cuh2slab.PltRange(low=-0.05, high=5), n_points=cuh2slab.PlotPoints(x_npt=40, y_npt=40), )
[docs] CUH2_MIN = ase.io.read(getstrform(get_gitroot() / "cuh2.con"))
[docs] def plot_band(_index, _band, _k, _method="xts", _opt="SD", _ci="False"): plot_last = _band cuh2slab.contour_plot( TRUE_E_DAT.pltpts, scatter_points=prepare_scatter_points(plot_last, CUH2_MIN), title=f"({_opt}, CI: {_ci}, {_k})\n Band {_index} ({_method})", ) oname = f"{_method}_{_opt}_{_ci}" plt.savefig(f"neb_path_{oname}_{_index:04d}.png") plt.close()
if __name__ == "__main__": import argparse
[docs] parser = argparse.ArgumentParser(description="Script to plot output.txt for CuH2")
parser.add_argument( "--nimgs", help="Number of images", required=True, ) parser.add_argument( "--ifile", help="Input file", default="output.txt", ) parser.add_argument( "--spring_const", help="Spring constant", default="8.2", ) args = parser.parse_args() otext = Path(args.ifile).open().readlines() ilines = [x for x in otext if "Iteration" in x] iparser = re.compile(r"Iteration\s(?P<iter>\d*): (?P<coords>\[\d?.*\])") path_arr = np.vstack( [ np.array(ast.literal_eval(iparser.match(x).group("coords"))) for x in ilines if iparser.match(x) ] ) # Ham handed approach n_bands = int(path_arr.shape[0] / path_arr.shape[1]) n_imgs = int(args.nimgs) for idx in range(n_bands): _start = idx * n_imgs _end = _start + n_imgs band = path_arr[_start:_end] plot_band(idx, band, args.spring_const, "xts", "SD", "False")