| 1 |
mlosch |
1.1 |
#!/usr/bin/env python |
| 2 |
|
|
# -*- coding: iso-8859-15 -*- |
| 3 |
|
|
######################## -*- coding: utf-8 -*- |
| 4 |
|
|
"""Usage: plotfc.py INPUTFILE |
| 5 |
|
|
""" |
| 6 |
|
|
import matplotlib.pyplot as plt |
| 7 |
|
|
import numpy as np |
| 8 |
|
|
import sys |
| 9 |
|
|
from getopt import gnu_getopt as getopt |
| 10 |
|
|
# parse command-line arguments |
| 11 |
|
|
try: |
| 12 |
|
|
optlist,args = getopt(sys.argv[1:], ':', ['verbose']) |
| 13 |
|
|
assert len(args) == 1 |
| 14 |
|
|
except (AssertionError): |
| 15 |
|
|
sys.exit(__doc__) |
| 16 |
|
|
|
| 17 |
|
|
fname=args[0] |
| 18 |
|
|
print("reading from "+fname) |
| 19 |
|
|
|
| 20 |
|
|
def get_output (fname, mystring): |
| 21 |
|
|
"""parse fname and get some numbers out""" |
| 22 |
|
|
iters = [] |
| 23 |
|
|
simuls= [] |
| 24 |
|
|
fc = [] |
| 25 |
|
|
try: |
| 26 |
|
|
f=open(fname) |
| 27 |
|
|
except: |
| 28 |
|
|
print(fname + " does not exist, continuing") |
| 29 |
|
|
else: |
| 30 |
|
|
for line in f: |
| 31 |
|
|
if mystring in line: |
| 32 |
|
|
ll = line.split() |
| 33 |
|
|
iters.append( int(ll[2].replace(',',''))) |
| 34 |
|
|
simuls.append(int(ll[4].replace(',',''))) |
| 35 |
|
|
fc.append( float(ll[6].replace('D','e').replace(',',''))) |
| 36 |
|
|
|
| 37 |
|
|
return iters, simuls, fc |
| 38 |
|
|
|
| 39 |
|
|
iters, simuls, fc = get_output(fname, "f=") |
| 40 |
|
|
# sort out restarts |
| 41 |
|
|
iters0 = np.asarray(iters) |
| 42 |
|
|
for k,it in enumerate(iters[0:]): |
| 43 |
|
|
if iters0[k]<iters0[k-1]: |
| 44 |
|
|
iters0[k:] = iters0[k:]+(iters0[k-1]-iters0[k]+1) |
| 45 |
|
|
|
| 46 |
|
|
fig, ax1 = plt.subplots() |
| 47 |
|
|
ax1.semilogy(iters0,(np.asarray(fc)-fc[-1]),'bx-') |
| 48 |
|
|
ax1.set_xlabel('iterations') |
| 49 |
|
|
ax1.set_ylabel('fc-min(fc)', color='b') |
| 50 |
|
|
ax1.tick_params('y', colors='b') |
| 51 |
|
|
ax1.grid() |
| 52 |
|
|
|
| 53 |
|
|
ax2 = ax1.twinx() |
| 54 |
|
|
ax2.plot(iters0,simuls, 'r.') |
| 55 |
|
|
ax2.set_ylabel('# simulations', color='r') |
| 56 |
|
|
ax2.tick_params('y', colors='r') |
| 57 |
|
|
|
| 58 |
|
|
plt.show() |