def test_actual_vasp_files(test_data_files: Path): vasprun_file = str(test_data_files / "MgO_dos_vasprun.xml") vasprun = Vasprun(vasprun_file) dos_data = DosDataFromVasp(vasprun, base_energy=1, vertical_lines=[0.0]).make_dos_data() plot_data = dos_data.dos_plot_data({"Mg": [0], "O": [1]}) plotter = DosPlotter(plot_data) plotter.construct_plot() plotter.plt.show()
def plot_dos(args: Namespace): vasprun = Vasprun(args.vasprun) outcar = Outcar(args.outcar) band_edge = VaspBandEdgeProperties(vasprun, outcar) if band_edge.band_gap: vertical_lines = [band_edge.vbm_info.energy, band_edge.cbm_info.energy] else: vertical_lines = [vasprun.efermi] if args.base_energy is None: base = vertical_lines[0] else: base = args.base_energy dos_data_from_vasp = \ DosDataFromVasp(vasprun, vertical_lines, base, args.crop_first_value) dos_data = dos_data_from_vasp.make_dos_data() ylim_set = None if args.y_max_ranges: if dos_data.spin: ylim_set = [[-y_max, y_max] for y_max in args.y_max_ranges] else: ylim_set = [[0, y_max] for y_max in args.y_max_ranges] structure = vasprun.final_structure grouped_atom_indices = args.type.grouped_atom_indices( structure, args.target) logger.info(f"Grouped atom indices: {grouped_atom_indices}") plot_data = dos_data.dos_plot_data(grouped_atom_indices, xlim=args.x_range, ylim_set=ylim_set) plot_data.to_json_file() plotter = DosPlotter(plot_data, args.legend) plotter.construct_plot() plotter.plt.savefig(args.filename, format="pdf")
def vasp_dos_data_energy_window(mocker): stub_vasprun = mocker.Mock(spec=Vasprun) stub_vasprun.complete_dos = CompleteDos(None, total_dos, pdoses) return DosDataFromVasp(stub_vasprun, crop_first_value=True, energy_window=[0.1, 1.1]).make_dos_data()
def vasp_dos_data_crop_first_value(mocker): stub_vasprun = mocker.Mock(spec=Vasprun) stub_vasprun.complete_dos = CompleteDos(None, total_dos, pdoses) return DosDataFromVasp(stub_vasprun, crop_first_value=True).make_dos_data()
def dos_data_from_vasp(mocker): stub_vasprun = mocker.Mock(spec=Vasprun) stub_vasprun.complete_dos = CompleteDos(None, total_dos, pdoses) return DosDataFromVasp(stub_vasprun).make_dos_data()