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