plx_info

PURPOSE ^

plx_info(filename, fullread) -- read and display .plx file info

SYNOPSIS ^

function [tscounts, wfcounts, evcounts] = plx_info(filename, fullread)

DESCRIPTION ^

 plx_info(filename, fullread) -- read and display .plx file info

 [tscounts, wfcounts] = plx_info(filename, fullread)

 INPUT:
   filename - if empty string, will use File Open dialog
   fullread - if 0, reads only the file header
              if 1, reads all the file
 OUTPUT:
   tscounts - 5x130 array of timestamp counts
      tscounts(i, j) is the number of timestamps for channel i, unit j
   wfcounts - 5x130 array of waveform counts
     wfcounts(i, j) is the number of waveforms for channel i, unit j
   evcounts - 1x512 array of external event counts
     evcounts(i) is the number of events for channel i

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [tscounts, wfcounts, evcounts] = plx_info(filename, fullread)
0002 % plx_info(filename, fullread) -- read and display .plx file info
0003 %
0004 % [tscounts, wfcounts] = plx_info(filename, fullread)
0005 %
0006 % INPUT:
0007 %   filename - if empty string, will use File Open dialog
0008 %   fullread - if 0, reads only the file header
0009 %              if 1, reads all the file
0010 % OUTPUT:
0011 %   tscounts - 5x130 array of timestamp counts
0012 %      tscounts(i, j) is the number of timestamps for channel i, unit j
0013 %   wfcounts - 5x130 array of waveform counts
0014 %     wfcounts(i, j) is the number of waveforms for channel i, unit j
0015 %   evcounts - 1x512 array of external event counts
0016 %     evcounts(i) is the number of events for channel i
0017 
0018 if(nargin ~= 2)
0019    disp('2 input arguments are required')
0020    return
0021 end
0022 
0023 if(isempty(filename))
0024    [fname, pathname] = uigetfile('*.plx', 'Select a plx file');
0025     filename = strcat(pathname, fname);
0026 end
0027 fid = fopen(filename, 'r');
0028 
0029 if(fid == -1)
0030     disp('cannot open file');
0031    return
0032 end
0033 
0034 disp(strcat('file = ', filename));
0035 header = fread(fid, 64, 'int32');
0036 version = header(2);
0037 freq = header(35);  % frequency
0038 ndsp = header(36);  % number of dsp channels
0039 nevents = header(37); % number of external events
0040 nslow = header(38);  % number of slow channels
0041 npw = header(39);  % number of points in wave
0042 npr = header(40);  % number of points before threshold
0043 disp(strcat('version = ', num2str(version)));
0044 disp(strcat('frequency = ', num2str(freq)));
0045 disp(strcat('number of DSP headers = ', num2str(ndsp)));
0046 disp(strcat('number of Event headers = ', num2str(nevents)));
0047 disp(strcat('number of A/D headers = ', num2str(nslow)));
0048 tscounts = fread(fid, [5, 130], 'int32');
0049 wfcounts = fread(fid, [5, 130], 'int32');
0050 evcounts = fread(fid, [1, 512], 'int32');
0051 if fullread > 0
0052    % reset counters
0053    tscounts = zeros(5, 130);
0054    wfcounts = zeros(5, 130);
0055    evcounts = zeros(1, 512);
0056    % skip variable headers
0057    fseek(fid, 1020*ndsp + 296*nevents + 296*nslow, 'cof');
0058     record = 0;
0059     while feof(fid) == 0
0060        type = fread(fid, 1, 'int16');
0061         upperbyte = fread(fid, 1, 'int16');
0062         timestamp = fread(fid, 1, 'int32');
0063         channel = fread(fid, 1, 'int16');
0064        unit = fread(fid, 1, 'int16');
0065        nwf = fread(fid, 1, 'int16');
0066        nwords = fread(fid, 1, 'int16');
0067        toread = nwords;
0068         if toread > 0
0069              wf = fread(fid, toread, 'int16');
0070         end
0071       if type == 1
0072          tscounts(unit+1, channel+1) = tscounts(unit+1, channel+1) + 1;
0073          if toread > 0
0074             wfcounts(unit+1, channel+1) = wfcounts(unit+1, channel+1) + 1;
0075          end
0076       end
0077       if type == 4
0078          evcounts(channel+1) = evcounts(channel+1) + 1;
0079       end
0080       
0081        record = record + 1;
0082        if feof(fid) == 1
0083           break
0084        end
0085     end
0086    disp(strcat('number of records = ', num2str(record)));
0087 end
0088 disp(' ');
0089 disp(' Timestamps:');
0090 disp(' ch unit  count');
0091 for i=1:130
0092    for j=1:5
0093       if tscounts(j, i) > 0
0094          disp(sprintf('%3d %4d %6d', i-1, j-1, tscounts(j, i)));
0095       end
0096    end
0097 end
0098 
0099 disp(' ');
0100 disp(' Waveforms:');
0101 disp(' ch unit  count');
0102 for i=1:130
0103    for j=1:5
0104       if wfcounts(j, i) > 0
0105          disp(sprintf('%3d %4d %6d', i-1, j-1, wfcounts(j, i)));
0106       end
0107    end
0108 end
0109 
0110 disp(' ');
0111 disp(' Events:');
0112 disp(' ch count');
0113 for i=1:300
0114   if evcounts(i) > 0
0115      disp(sprintf('%3d %6d', i-1, evcounts(i)));
0116    end
0117 end
0118 
0119 disp(' ');
0120 disp(' A/D channels:');
0121 disp(' ch count');
0122 for i=301:364
0123   if evcounts(i) > 0
0124      disp(sprintf('%3d %6d', i-301, evcounts(i)));
0125    end
0126 end
0127 
0128 
0129 fclose(fid);

Generated on Fri 12-Aug-2011 11:36:15 by m2html © 2005