1#!/usr/bin/env python
2
3import os
4import sys
5import h5py
6import numpy as np
7import argparse
8
9epsilon = 1.0e-8
10
11
12def get_options():
13    # Arg-parser
14    parser = argparse.ArgumentParser(
15        description="Plot collision matrix eigenvalues")
16    parser.add_argument(
17        '--temperature', type=float, default=300.0, dest='temperature',
18        help='Temperature to output data at')
19    parser.add_argument('filenames', nargs='*')
20    args = parser.parse_args()
21    return args
22
23
24def main(args):
25    filename = args.filenames[0]
26    if os.path.isfile(filename):
27        with h5py.File(filename, 'r') as f:
28            coleigs = f['collision_eigenvalues'][:]
29            temperatures = f['temperature'][:]
30    else:
31        print("File %s doens't exist." % filename)
32        sys.exit(1)
33
34    import matplotlib.pyplot as plt
35
36    fig, ax = plt.subplots()
37    ax.xaxis.set_ticks_position('bottom')
38    ax.yaxis.set_ticks_position('left')
39    ax.xaxis.set_tick_params(which='both', direction='in')
40    ax.yaxis.set_tick_params(which='both', direction='in')
41
42    if len(temperatures) > 29:
43        t_index = 30
44    else:
45        t_index = 0
46    for i, t in enumerate(temperatures):
47        if np.abs(t - args.temperature) < epsilon:
48            t_index = i
49            break
50
51    coleigs_p = coleigs[t_index].copy()
52    coleigs_n = coleigs[t_index].copy()
53    coleigs_p[coleigs_p < 0] = np.nan
54    coleigs_n[coleigs_n >= 0] = np.nan
55
56    ax.semilogy(coleigs_p, 'b.', markersize=1)
57    ax.semilogy(-coleigs_n, 'r.', markersize=1)
58    ax.set_xlim(0, len(coleigs_p))
59    plt.show()
60
61
62if __name__ == "__main__":
63    main(get_options())
64