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.