GENESIS: Documentation

Related Documentation:
Contributed By:
Dave Beeman (dbeeman@dogstar.colorado.edu)

plotVm.py

Extended version of fplot.py. Uses Matplotlib object-oriented classes instead of Matlab-like pylab commands.

#!/usr/bin/env python  
 
# plotVm ver 0.5 - a command line utility to plot a wildcarded argument  
# list of files containing membrane potential data, and plots them in  
# different colors on the same axes  
 
import sys, os  
import matplotlib.pyplot as plt  
import numpy as np  
 
def plot_file(file,format):  
    print ’Plotting %s’ % file  
    x = []; y = []  
    fp = open(file, ’r’)  
    for line in fp.readlines():  
        data = line.split(" ")  
        x.append(data[0]); y.append(data[1])  
    # print "Data length is ", len(x), "Format is ", format  
    axes.plot(x, y, format)  
    # use this instead, to let pyplot plot pick new colors  
    # axes.plot(x, y)  
 
def do_plot_files(filenames):  
    if len(filenames) > 0:  
        formats = [’k’, ’r’, ’b’, ’g’, ’m’, ’c’]  
        plotnum = 0  
        for file in filenames:  
            # print file  
            format = formats[plotnum % len(formats)]  
            # print format, plotnum  
            try:  
                if os.path.exists(file):  
                    plot_file(file,format)  
                    plotnum = plotnum + 1  
                else:  
                    print ’*** Error: Incorrect file name or path specified ***’  
            # I need to do better error handling!  
            except:  
                print ’An error ocurred’  
                sys.exit()  
    else:  
        print "No files were specified for plotting!"  
        print "Please give one or more filenames as arguments, e.g.\n"  
        print "    plotVm Vm.out pyr4*.out\n"  
        sys.exit()  
if __name__ == "__main__":  
    # Get the arguments (possibly wildcarded) into a list of filenames  
    filenames = sys.argv[1:]  
    print filenames  
    # create the plot  
    fig = plt.figure()  
    axes = fig.add_subplot(111)  
    do_plot_files(filenames)  
    axes.set_title(’Membrane Potential’)  
    axes.set_xlabel(’seconds’)  
    axes.set_ylabel(’Volts’)  
    axes.axis(ymin=-0.1, ymax=0.05)  
    # to use autoscaling  
    # axes.axis(’auto’)  
    # to add a legend  
    # axes.legend(filenames)  
    plt.draw()  
    plt.show()