Hi everybody,

I have put together a set of matlab routines that create HTML summaries of .plx files. I've run the routines on a bit of Lucas's data, and the results can be viewed here:


I also have a set of routines tailored for my analysis with the kinarm. The resulting summary mislabels Lucas's data, but it should be easy to modify the code to do what you want:


Because the plexon and openGL libraries are buggy, the anaysis crashes aperiodically, with an approximate time constant of 2 hours. To remedy this I have moved all 'volatile' computation to a 2nd matlab instantiantion while the first just controls which files are to be read. This control script is rundirs.mat, and it takes 3 arguments: the root directory, or directory where .plx files are copied from (for me, this is the snap server, //snap2/Data1/carmena/nino/PLX ), the destination directory - where the output is saved, and the cache directory, which should be on the fastest (i.e. outer sectors) of your hard drive, the fastest hard drive in your system, or a RAM disk (I use the last, as the system I run the scripts on has 4gb of ram.) Unless you modify the script, the cache directory will be repeatedly trashed; the script will remind you of this, but be careful! A cache is very useful, as the mexplex routines have to scan the entire .plx file for each waveform, spike, or analog channel that is read in. (of course, once they are read in, the scripts make individual .mat records for faster reading later). This main script scans the root directory for all files that match the regex \w+\d\d\d\d\d\d[^\.]*\.plx i.e. some non digits followed by 6 digits of date followed by a .plx extension, copies the file to both cache and destination directories, then generates a subdirectory of the dest with the same name as the root of the file being analyzed. The child matlab process then executes runfile.m, which takes one parameter in extra from rundirs.m : the name of the file. If you only want to summarize one .plx file, this is where to start.

Some notes on instalation: I'm sure I have hard coded quite a few parameters that you will like to change: for example I've set rundirs to ignore any really huge files (> 2.5gb), as these files would not fit on the RAM disk. Another known hardcoded parameter is the location of imagemagick, which is the open-source software that is used to resize the figure .jpgs so the browser does not choke on 1e8 pixels when loading the summary pages. The imagemagick folder must be put on C:\ImageMagic-6.2.0\Visual ... (I've stripped out some of the extra source to make the compressed file smaller). As stated above, the behav_index.html created by createBehavHTML.m and kinarm_loadanalog.m is setup for Jose & I, so modify it before using.

Here are the needed files:
(1) imagemagick.rar extract to C:\ as above. non-binary versions available at http://www.imagemagick.org/
(2) analysis.rar put it somewhere on your matlab path. warning: contains several unnecessary files (which I am too lazy to weed out:)
(2.5) analysis files look at them online before you buy! (this is my way of sharing with the world)
(3) mexplex.rar from our friends in Dallas

Some notes on running: To facilitate quick debugging and easy resumption from opengl or mexplex crashes, the scripts do not work on the plexon files if it appears that a previous pass was successful. The first tier of this is the 'done.mat' in each .plx files subdirectory. If found, everything is skipped; therefore delete it to try the analysis again. Second are the files in ./waveforms and ./analog corrresponding to each waveform and analog channel; they are preferred over reading in a huge .plx file. Third are the pca_sigxx.jpg files; as they are produced last in the summary of each waveform channel, if the image is found the plexon file is not read. Delete any of these files to have the script re-genereate them.

Notes on the waveform plots: the colored patches are alpha-blended according to 0.7 * ( the total waveforms on this unit / total waveforms on electrode ) + 0.3 ; this permits a simple graphical display of relative threshold crossing rates. The PCA plots are expended to 3.3 standard deviations in both directions, and are alpha blended so that the net fill per unit when the waveform count is high is relatively constant. Lucas's data was run on an older version of the scripts; the latest graphs waveform PCA in both color, differentially alpha blended and black, constant alpha. The ISI plots are filtered with a Savitsky-Golay filter typically used with spectrograms, but the edges of this filter may give strange artifacts when there are only a few waveforms.

Now, I'm sure there will be problems, so email me for a fix: tim@hardcarve.com