PLX.jl reads Plexon PLX files in Julia. It is several times faster than the MATLAB SDK provided by Plexon Inc.
Because PLX.jl loads the entire contents of a given Plexon file into memory, you will want at least as much RAM as your largest Plexon file.
To read a Plexon file:
load("PLX") using PLX plx = PLXFile("/path/to/plexon/file.plx")
To read a Plexon file without LFPs:
load("PLX") using PLX plx = PLXFile("/path/to/plexon/file.plx", lfps=false)
To read a Plexon file including spike waveforms:
load("PLX") using PLX plx = PLXFile("/path/to/plexon/file.plx", waveforms=true)
To access spike times:
To access encodes and encode times:
To find samples around given time points in a continuous channel, use:
channel = plx.continuous_channels[n] channel.data[sample_index(channel.times, index_or_indices)]
For further documentation of the PLXFile type, read the source or use
PLX.jl relies heavily on the functionality provided by
mmap_array to read files. I'm not actually sure if this works on Windows. However, it provides a large (~2X) performance boost on Linux.
PLX.jl implements its own object (
SampleTimes) to handle the timestamps on continuous channels, both to save memory and to optimize searching for sample indices corresponding to specific time points.
Documentation of the PLX format is available on Plexon's website, or in PDF form here.