Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

MatLab

MatPlotLib

Comments

Code Block
a1 = subplot(121);
loglog(channels(:,1),channels(:,2),'o')
xlabel('CH0')
ylabel('CH1')
a2 = subplot(122);
loglog(channels(:,3),channels(:,4),'o')
xlabel('CH2')
ylabel('CH3')
Code Block
import matplotlib.pyplot as plt
import numpy as np

a1 = plt.subplot(221)
plt.loglog(channels[:,0],channels[:,1], 'o' )
plt.xlabel('CH0')
plt.ylabel('CH1')
a2 = plt.subplot(222)
plt.loglog(channels[:,2],channels[:,3], 'o' )
plt.xlabel('CH2')
plt.ylabel('CH3')

channels is a 4xN array of floats, where N is the number of events. Each column corresponds to one out of four Ipimb channels.

Note that the arrays are indexed with 1,2,3,4 in MatLab and 0,1,2,3 in MatPlotLib/NumPy/Python.

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="4e8b924f43df2f39-a8ef4ad7-4db54332-b755acd0-98bd34c92fc5b0cb9c41dfae"><ac:plain-text-body><![CDATA[Note also the use of paranthesis, array() in MatLab, array[] in MatPlotLib.

]]></ac:plain-text-body></ac:structured-macro>

Code Block

axes(a1)
hold on
set(gca,'xcolor','r','ycolor','r')
lims(1:2,:-) = ginput(2);

axes(a2)
hold on
set(gca,'xcolor','r','ycolor','r')
lims(3:4,:-) = ginput(2);

set(gca,'xcolor','k','ycolor','k')
fbool = (filtvec(channels(:,1),fbool1 = (channels(:,1)>min(lims(1:2,1)))&(channels(:,1)<max(lims(1:2,1)))
fbool2 = (channels(:,2)>min(lims(1:2,12)))&filtvec(channels(:,2),<max(lims(1:2,2)));
fbool = fbool1&fbool2
loglog(channels(fbool,1),channels(fbool,2),'or')

axes(a2)

set(gca,'xcolor','k','ycolor','k')
fbool = (filtvec(channels(:,3),hold on
lims(3:4,:) = ginput(2);
fbool3 = (channels(:,3)>min(lims(3:4,3)))&(channels(:,3)<max(lims(3:4,3)))
fbool4 = (channels(:,4)>min(lims(3:4,14)))&filtvec(channels(:,4),<max(lims(3:4,24)));
fbool = fbool3&fbool4
loglog(channels(fbool,3),channels(fbool,4),'or')

 
Code Block
plt.axes(a1)
plt.hold(True)
aa = plt.gca()
aa.set_xcolor = 'k'
aa.set_ycolor = 'k'
limslista = plt.ginput(2)
# list: (x0,y0),(x1,y1)

plt.axes(a2)
plt.hold(True)
bb = plt.gca()
bb.set_xcolor = 'k'
bb.set_ycolor = 'k'
limslistb = plt.ginput(2)
# list: (x2,y2),(x3,y3)

limsa = np.array(limslista)
# \[ x0   y0
#  x1   y1 \]

limsb = np.array(limslistb)
# \[ x2   y2
#  x3   y3 \]

lims = np.hstack( [limsa, limsb] )
# \[ x0  y0  x2  y2       =    \[ ch0  ch1  ch2  ch3 \]
#   x1  y1  x3  y3 \]
# now each column corresponds to one channel.

print "limits array : ", lims

# fbool is an array of event indices where these conditions are met.
fbools0 = (channels[:,0]>lims[:,0].min())&(channels[:,0]<lims[:,0].max())
fbools1 = (channels[:,1]>lims[:,1].min())&(channels[:,1]<lims[:,1].max())
fbools = fbools0 & fbools1

fbools2 = (channels[:,2]>lims[:,2].min())&(channels[:,2]<lims[:,2].max())
fbools3 = (channels[:,3]>lims[:,3].min())&(channels[:,3]<lims[:,3].max())
fbools = fbools2&fbools3

In MatLab, lims is an expandable array that holds limits as set by input from mouse click on the plot (ginput).
NumPy arrays cannot be expanded, so I've chosen to append to a python list first, then fill a NumPy array for the usage to look the same.

The exact usage of the lims array depends on where you place each limit. I think perhaps I've done it differently from the MatLab version.