コード例 #1
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "path",
        nargs="?",
        type=Path,
        default=Path("momentum_distribution.h5"),
        help="path to the momentum_distribution file",
    )
    parser.add_argument("--colorbar", type=bool)
    add_argparse_2d_args(parser)
    add_argparse_save_arg(parser)
    args = parser.parse_args()

    figure, ax = plt.subplots(1, 1)

    times, momenta, density = read_momentum_distribution_hdf5(
        args.path,
        "momentum_distribution",
    )

    average_momentum = numpy.zeros_like(times)
    for i, _ in enumerate(average_momentum):
        average_momentum[i] = numpy.sum(momenta * density[i])

    Y, X = numpy.meshgrid(momenta, times)
    mesh = ax.pcolormesh(X, Y, density)
    plt.plot(times, average_momentum)

    apply_2d_args(ax, figure, args)

    handle_saving(figure, args)

    plt.show()
コード例 #2
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "path",
        nargs="?",
        type=Path,
        default="propagate.h5/output",
        help="path to the output file",
    )
    add_argparse_2d_args(parser)
    add_argparse_save_arg(parser)
    args = parser.parse_args()

    figure, ax = plt.subplots(1, 1)

    time, _, energy, _ = read_output(args.path)
    plot_energy(ax, time, energy)

    system = units.get_default_unit_system()
    ax.set_xlabel(system.get_time_unit().format_label("t"))
    ax.set_ylabel(system.get_length_unit().format_label("x"))

    apply_2d_args(ax, figure, args)

    handle_saving(figure, args)
    plt.show()
コード例 #3
0
ファイル: energy_diff.py プロジェクト: f-koehler/mlxtk
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("path", nargs=2, help="path to the output file")
    add_argparse_2d_args(parser)
    args = parser.parse_args()

    figure, ax = plt.subplots(1, 1)

    time1, _, energy1, _ = read_output(args.path[0])
    time2, _, energy2, _ = read_output(args.path[1])

    if time1.shape != time2.shape:
        raise ValueError("different number of time points")

    if not numpy.allclose(time1, time2):
        raise ValueError("different time points")

    plot_energy_diff(ax, time1, energy1, energy2)

    system = units.get_default_unit_system()
    ax.set_xlabel(system.get_time_unit().format_label("t"))
    ax.set_ylabel(system.get_energy_unit().format_label(r"\Delta E"))

    apply_2d_args(ax, figure, args)

    plt.show()
コード例 #4
0
ファイル: entropy_diff.py プロジェクト: f-koehler/mlxtk
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("path", nargs=2, help="path to the natpop file")
    parser.add_argument("-n", "--node", type=int, default=1, help="node")
    parser.add_argument("-d",
                        "--dof",
                        type=int,
                        default=1,
                        help="degree of freedom")
    add_argparse_2d_args(parser)
    args = parser.parse_args()

    figure, ax = plt.subplots(1, 1)

    time1, natpop1 = read_natpop(args.path[0], node=args.node, dof=args.dof)
    time2, natpop2 = read_natpop(args.path[1], node=args.node, dof=args.dof)

    if time1.shape != time2.shape:
        raise ValueError("number of time points differs")

    if not numpy.allclose(time1, time2):
        raise ValueError("time points differ")

    entropy1 = compute_entropy(natpop1)
    entropy2 = compute_entropy(natpop2)

    plot_entropy_diff(ax, time1, entropy1, entropy2)

    system = units.get_default_unit_system()
    ax.set_xlabel(system.get_time_unit().format_label("t"))

    apply_2d_args(ax, figure, args)

    plt.show()
コード例 #5
0
ファイル: natpop.py プロジェクト: f-koehler/mlxtk
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "path",
        nargs="?",
        type=Path,
        default=Path("propagate.h5/natpop"),
        help="path to the natpop file",
    )
    parser.add_argument("-n", "--node", type=int, default=1, help="node")
    parser.add_argument("-d",
                        "--dof",
                        type=int,
                        default=1,
                        help="degree of freedom")
    add_argparse_2d_args(parser)
    add_argparse_save_arg(parser)
    args = parser.parse_args()

    figure, ax = plt.subplots(1, 1)

    time, natpop = read_natpop(args.path, node=args.node, dof=args.dof)
    plot_natpop(ax, time, natpop)

    try:
        ax.set_xlabel(
            units.get_default_unit_system().get_time_unit().format_label("t"))
    except units.MissingUnitError:
        ax.set_xlabel("$t$")

    apply_2d_args(ax, figure, args)
    handle_saving(figure, args)

    if not args.output:
        plt.show()
コード例 #6
0
ファイル: dmat_spf_slider.py プロジェクト: f-koehler/mlxtk
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("path", help="path to the dmat file")
    plot.add_argparse_2d_args(parser)
    args = parser.parse_args()

    app = QtWidgets.QApplication(sys.argv)
    DmatSlider(*inout.read_dmat_spfrep(args.path), args)
    sys.exit(app.exec_())
コード例 #7
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("path", help="path to the dmat file")
    plot.add_argparse_2d_args(parser)
    args = parser.parse_args()

    app = QtWidgets.QApplication(sys.argv)
    data = read_dmat_spfrep_hdf5(args.path, "dmat_spfrep")
    gui = Gui(data, 0, len(data[0]) - 1)
    sys.exit(app.exec_())
コード例 #8
0
ファイル: gpop.py プロジェクト: f-koehler/mlxtk
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "path",
        nargs="?",
        type=Path,
        default=Path("propagate.h5/gpop"),
        help="path to the gpop file",
    )
    parser.add_argument("-d",
                        "--dof",
                        type=int,
                        default=1,
                        help="degree of freedom")
    parser.add_argument(
        "--momentum",
        action="store_true",
        help="whether to transform to momentum space",
    )
    parser.add_argument("--logz", action="store_true")
    parser.add_argument("--zmin", type=float)
    parser.add_argument("--zmax", type=float)
    parser.add_argument("--colorbar", action="store_true")
    add_argparse_2d_args(parser)
    add_argparse_save_arg(parser)
    args = parser.parse_args()

    figure, ax = plt.subplots(1, 1)

    data = read_gpop(args.path, dof=args.dof)
    if args.momentum:
        data = transform_to_momentum_space(data)
    mesh = plot_gpop(ax, *data, args.zmin, args.zmax, args.logz)
    if args.colorbar:
        figure.colorbar(mesh, ax=ax).solids.set_rasterized(True)

    unitsys = units.get_default_unit_system()
    try:
        ax.set_xlabel(unitsys.get_time_unit().format_label("t"))
    except units.MissingUnitError:
        ax.set_xlabel("$t$")

    try:
        ax.set_ylabel(unitsys.get_length_unit().format_label("x"))
    except units.MissingUnitError:
        ax.set_ylabel("$x$")

    apply_2d_args(ax, figure, args)

    handle_saving(figure, args)

    if not args.output:
        plt.show()
コード例 #9
0
ファイル: expval.py プロジェクト: f-koehler/mlxtk
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("path",
                        type=Path,
                        nargs="+",
                        help="path to the output file")
    parser.add_argument(
        "--fft",
        action="store_true",
        help="whether to transform the signal to frequency space",
    )
    parser.add_argument("--xname", help="", default="time")
    add_argparse_2d_args(parser)
    add_argparse_save_arg(parser)
    args = parser.parse_args()

    figure, ax = plt.subplots(1, 1)

    unitsys = mlxtk.units.get_default_unit_system()

    for file in args.path:
        name = file.stem
        time, values = read_expval_hdf5(file, xname=args.xname)
        if args.fft:
            plot_expval(ax,
                        *mlxtk.tools.signal.fourier_transform(time, values),
                        label=name)

            ax.set_xlabel(
                (1 / unitsys.get_time_unit()).format_label(r"\omega"))
            ax.set_ylabel(
                mlxtk.units.ArbitraryUnit().format_label(
                    r"\mathrm{amplitude}"), )
        else:
            plot_expval(ax, time, values, label=name)
            if args.xname == "time":
                ax.set_xlabel(unitsys.get_time_unit().format_label("t"))
            else:
                ax.set_xlabel(args.xname)

    if len(args.path) > 1:
        ax.legend()

    apply_2d_args(ax, figure, args)

    handle_saving(figure, args)

    if not args.output:
        plt.show()
コード例 #10
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "path",
        nargs="?",
        default="evec_dmat_dof1_spf",
        help="path to the file containing the eigenvectors of the dmat",
    )
    plot.add_argparse_2d_args(parser)
    args = parser.parse_args()

    app = QtWidgets.QApplication(sys.argv)
    window = DmatEvecSlider(*inout.read_dmat_evecs_grid(args.path), args)
    sys.exit(app.exec_())
    del window
コード例 #11
0
def main():
    global MODFUNCS

    parser = argparse.ArgumentParser()
    parser.add_argument(
        "scan_dir",
        type=Path,
        help="directory of the scan containing the file scan.pickle",
    )
    parser.add_argument(
        "-f",
        "--file",
        type=Path,
        default=Path("propagate") / "propagate.h5/natpop",
        help="relative path within each simulation",
    )
    parser.add_argument("-d", "--dof", type=int, default=1, help="degree of freedom")
    parser.add_argument("-n", "--node", type=int, default=1, help="node")
    parser.add_argument(
        "-e",
        "--extension",
        type=str,
        default=".pdf",
        help="file extensions for the plots",
    )
    parser.add_argument("-o", "--output", type=str, help="name of the output directory")
    plot.add_argparse_2d_args(parser)
    args = parser.parse_args()

    if not args.output:
        args.output = f"natpop_{args.dof}_{args.node}"

    def apply_args(fig: Figure, ax: Axes, parameters: Parameters):
        del parameters
        plot.apply_2d_args(ax, fig, args)

    MODFUNCS = [apply_args] + MODFUNCS

    load_scan(args.scan_dir).plot_foreach(
        args.output,
        partial(
            plot_natpop,
            file_path=args.file,
            dof=args.dof,
            node=args.node,
            extension=args.extension,
        ),
    )
コード例 #12
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "path",
        nargs="?",
        type=str,
        default="dmat2.h5/dmat2_gridrep",
        help="path to the dmat file",
    )
    plot.add_argparse_2d_args(parser)
    args = parser.parse_args()

    app = QtWidgets.QApplication(sys.argv)
    data = read_dmat2_gridrep(args.path)
    gui = Gui(data, 0, len(data[0]) - 1)
    sys.exit(app.exec_())
コード例 #13
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "path",
        nargs="+",
        default=["natpop"],
        help="path to the natpop file",
    )
    parser.add_argument("-n", "--node", type=int, default=1, help="node")
    parser.add_argument("-d",
                        "--dof",
                        type=int,
                        default=1,
                        help="degree of freedom")
    parser.add_argument(
        "--normalize",
        action="store_true",
        help="whether to normalize the entropy",
    )
    add_argparse_2d_args(parser)
    add_argparse_save_arg(parser)
    args = parser.parse_args()

    labels = labels_from_paths(args.path)
    figure, ax = plt.subplots(1, 1)

    for path, label in zip(args.path, labels):
        time, natpop = read_natpop(path, node=args.node, dof=args.dof)
        try:
            entropy = compute_entropy(natpop, args.normalize)
        except ZeroDivisionError:
            entropy = compute_entropy(natpop)
            args.normalize = False
        plot_entropy(ax, time, entropy, label=label, normalize=args.normalize)

    system = units.get_default_unit_system()
    ax.set_xlabel(system.get_time_unit().format_label("t"))

    apply_2d_args(ax, figure, args)
    if len(args.path) > 1:
        ax.legend()

    handle_saving(figure, args)
    if not args.output:
        plt.show()
コード例 #14
0
ファイル: energy.py プロジェクト: f-koehler/mlxtk
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "scan_dir",
        type=str,
        help="directory of the scan containing the file scan.pickle",
    )
    parser.add_argument(
        "-f",
        "--file",
        type=Path,
        default=Path("propagate") / "output",
        help="relative path within each simulation",
    )
    parser.add_argument(
        "-e",
        "--extension",
        type=str,
        default=".pdf",
        help="file extensions for the plots",
    )
    parser.add_argument(
        "-o",
        "--output",
        type=Path,
        default="energy",
        help="name of the output directory",
    )
    plot.add_argparse_2d_args(parser)
    args = parser.parse_args()

    def apply_args(fig: Figure, ax: Axes, parameters: Parameters):
        del parameters
        plot.apply_2d_args(ax, fig, args)

    load_scan(args.scan_dir).plot_foreach(
        args.output,
        partial(
            plot_energy,
            file_path=args.file,
            modfunc=apply_args,
            extension=args.extension,
        ),
    )
コード例 #15
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "scan_dir",
        type=Path,
        help="directory of the scan containing the file scan.pickle",
    )
    parser.add_argument(
        "expval",
        type=Path,
        help="relative path to expval within each simulation",
    )
    parser.add_argument(
        "-e",
        "--extension",
        type=str,
        default=".pdf",
        help="file extensions for the plots",
    )
    parser.add_argument("-o",
                        "--output",
                        type=str,
                        help="name of the output directory")
    plot.add_argparse_2d_args(parser)
    args = parser.parse_args()

    if not args.output:
        args.output = "_".join(args.expval.with_suffix("").parts)

    def apply_args(fig: Figure, ax: Axes, parameters: Parameters):
        del parameters
        plot.apply_2d_args(ax, fig, args)

    load_scan(args.scan_dir).plot_foreach(
        args.output,
        partial(
            plot_expval,
            file_path=args.expval,
            modfunc=apply_args,
            extension=args.extension,
        ),
    )
コード例 #16
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "path_natpop",
        nargs="?",
        default="natpop",
        help="path to the natpop file",
    )
    parser.add_argument(
        "path_evals",
        nargs="?",
        default="eval_dmat_dof1",
        help="path to the file containing the dmat eigenvalues",
    )
    parser.add_argument("-n", "--node", type=int, default=1, help="node")
    parser.add_argument("-d",
                        "--dof",
                        type=int,
                        default=1,
                        help="degree of freedom")
    add_argparse_2d_args(parser)
    args = parser.parse_args()

    figure, ax = plt.subplots(1, 1)

    time, natpop = read_natpop(args.path_natpop, node=args.node, dof=args.dof)
    time2, evals = read_dmat_evals(args.path_evals)

    if not numpy.allclose(time, time2):
        raise RuntimeError("time points do not match")

    for natpop, value in zip(natpop.T, evals.T):
        plt.plot(time, natpop - value)

    system = units.get_default_unit_system()
    ax.set_xlabel(system.get_time_unit().format_label("t"))

    apply_2d_args(ax, figure, args)

    plt.show()
コード例 #17
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("path",
                        nargs="?",
                        default="psi",
                        help="path to psi file")
    parser.add_argument(
        "gpop",
        nargs="?",
        default="gpop",
        help="path to a gpop file in order to determin the grid",
    )
    plot.add_argparse_2d_args(parser)
    args = parser.parse_args()

    times, spfs = inout.read_spfs(args.path)
    _, grid, _ = inout.read_gpop(args.gpop, dof=1)

    app = QtWidgets.QApplication(sys.argv)
    window = DmatEvecSlider(times, grid, spfs, args)
    assert window
    sys.exit(app.exec_())
コード例 #18
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "path",
        nargs="?",
        default="propagate.h5/gpop",
        help="path to the gpop file",
    )
    parser.add_argument("-d", "--dof", type=int, default=1, help="degree of freedom")
    parser.add_argument(
        "--momentum",
        action="store_true",
        help="transform to momentum space",
    )
    plot.add_argparse_2d_args(parser)
    args = parser.parse_args()

    app = QtWidgets.QApplication(sys.argv)
    data = read_gpop(args.path, args.dof)
    if args.momentum:
        data = transform_to_momentum_space(data)
    gui = Gui(data, 0, len(data[0]) - 1, plot_args=args)
    sys.exit(app.exec_())
コード例 #19
0
ファイル: spfs_vs_norbs.py プロジェクト: f-koehler/mlxtk
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("path_psi", nargs="?", help="path to psi file")
    parser.add_argument(
        "path_norbs",
        nargs="?",
        help="path to file with natural orbitals",
    )
    plot.add_argparse_2d_args(parser)
    args = parser.parse_args()

    times, spfs = inout.read_spfs(args.path_psi)
    _, grid, norbs = inout.read_dmat_evecs_grid(args.path_norbs)

    weights = numpy.sqrt(dvr.add_harmdvr(225, 0.0, 0.3).get_weights())

    for i in range(norbs.shape[0]):
        for j in range(norbs.shape[1]):
            norbs[i][j] *= weights

    app = QtWidgets.QApplication(sys.argv)
    window = DmatEvecSlider(times, grid, numpy.abs(spfs) - numpy.abs(norbs), args)
    assert window
    sys.exit(app.exec_())