### Sidebar

Reference

analysis:nsb2017:week2

## Module 2: Introduction to neural data types, file formats and preprocessing

Goals:

• Consider the common structure in diverse (neural) data sets
• Understand how such data can be intuitively and efficiently represented in three custom MATLAB data types (ts, tsd, and iv)
• Learn where to find commonly used utility functions that perform basic operations on these data types
• Obtain a basic overview of the different file formats saved by a Neuralynx system (as an example)
• Become aware of the pre-processing steps typically applied to raw data
• Get to know the different files in a pre-processed (“promoted”) vandermeerlab data set, and their relationship to the raw data
• Use the low-level and wrapped loading functions for all these files

Resources:

• (reference) Introduction to MATLAB structures (structs); if you are new to MATLAB, you should make sure you work through the howto sections “Create a Structure Array” and “Access Data in a Structure Array”.
• (reference) Same thing for cell arrays.
• (reference) I mean it. Nothing that follows will make sense if you don't know about structs and cell arrays.

## Introductory remarks

Careful analysis of neural data begins with a thorough understanding of the raw data that is saved by your data acquisition system(s). However, raw data is only rarely suitable for analysis beyond a few quick checks. At a minimum, freshly acquired data sets typically must be annotated, and/or the files systematically renamed – for instance, with the ID of the experimental subject and some information about recording locations – so that the analyst can select which files to analyze, and combine results across sessions and subjects. More complex pre-processing steps include spike sorting (the process of assigning spike waveforms to putative single neurons to obtain their spike times), artefact removal, and many others.

Pre-processed data can be loaded into MATLAB, typically using code provided by the vendor, or perhaps by something created by the community. Either way, how you represent the data – what data types you use – has a major bearing on how effectively you can accomplish multiple principles of careful data analysis. Therefore, we will begin with a consideration of the general structure of neural data sets.

A word of warning and encouragement: this module is probably the least exciting of the tutorial, but it's important to get the fundamentals in place before we get to the more interesting parts.

## Structure of (describing) neural data

#### Sampled signals

In general, data acquisition systems work by sampling (i.e. periodically taking a measurement of) some quantity of interest, such as the potential difference (voltage) between an electrode placed in a brain area of interest and a reference. That is, measurements of a signal are repeatedly taken, at some finite sampling rate, as the signal evolves over time. This kind of data is often referred to as time series data, and may look like this:

Time is shown on the horizontal axis (“abscissa”), and the value of this particular quantity (on the vertical axis, “ordinate”) is changing over time. At regular intervals – the inverse of the sampling rate (1 / Fs), to be precise – we obtain a measurement, indicated by the black dots. We are blind to any changes in between the samples, illustrated by the unbroken line. Obviously, this illustration shows a single signal, but many systems will record multiple signals simultaneously, such as an EEG system that records voltages from 256 scalp electrodes, or a rodent electrophysiology system that in addition to neural data also records the position of the animal, a video camera records a signal in each of many pixels, and so on.

The fact that we are dealing with sampled signals has some important consequences for data analysis, broadly captured by the term sampling theory, of which we will introduce a few in Module 5. The “Nyquist limit” and the “Moiré effect” (aliasing) are two well-known examples.

#### Point processes (timestamps)

Neuroscience attributes particular significance to action potentials, or “spikes”, which are typically understood as all-or-none events that occur at a specific point in time (hence the technical term, point process). To describe a train of spikes, it is not necessary to state all the times at which there was no spike: it suffices to maintain a list of those times (sometimes called timestamps) at which a spike train was emitted.

The same description works well for other quantities of interest which are essentially punctate events, such as delivery of a reward pellet, initiation of a key press, and so on.

#### Intervals

Although uncommon in raw neural data, time intervals (epochs with a certain duration, rather than a point in time) commonly arise in some aspect of experimental procedures and analyses. Intervals describe occurrences that have start and end times, such as a trial of an experiment, the presence of a cue (e.g. a light or a tone), et cetera.

Together, these three types of data can describe most data sets encountered in neuroscience. Putting all three together in a simple visualization might look something like this:

At the top of the figure, you can see several rows containing point process data: the dots indicate spikes, one row per neuron. At the bottom, you see time series data (a local field potential), and the colored blocks show intervals with two different labels, indicated by the color.

☛ Now, think about one of your own experiments. How would you describe the data you collect? What quantities (signals) of interest are time series data, what are point processes, and what is best described as intervals?

## Introduction to neural data types

A data type is the computer science term for a standardized format of representing data. Classical data types include things like integers and floating-point numbers, but our data types of interest are essentially all MATLAB structs with particular constraints on field names and formats.

(Note for the connoisseurs: the choice to not implement these data types as MATLAB objects is deliberate.)

The three main data types are (1) timestamped data (TSD), (2) timestamps (TS), (3) and intervals (IV), discussed in turn below. Standardizing how we represent these data makes it possible for commonly used functions to be used on any data set – good for readability and robustness!

### Timestamped data (TSD) data-type

As introduced above, a sampled signal is essentially a list of data points (values), taken at specific times. Thus, what we need to fully describe such a signal is two arrays of the same length: one with the timestamps and the other with the corresponding values. This is exactly what the timestamped data (TSD) data type is, as illustrated by the LoadCSC() function:

%% load data
cd('D:\Data\R016\R016-2012-10-08'); % same session as Module 1

cfg = [];
cfg.fc = {'R016-2012-10-08-CSC02d.ncs'}; % cell array with filenames to load

>> csc

csc =

type: 'tsd'
tvec: [5498360x1 double]
data: [1x5498360 double]
label: {'R016-2012-10-08-CSC02d.ncs'}
cfg: [1x1 struct]

The TSD data type has the following fields:

• type: string indicating data type, 'tsd'
• tvec: nSamples x 1 double, timestamps (in seconds)
• data: nSignals x nSamples double, values (units can be specified in cfg if needed)
• label: nSignals x 1 cell array, filenames
• cfg: content depends on specific data, but always has a history field. For CSC data, there is also hdr, ExpKeys, and SessionID.

Thus, the tvec field and the data field together define the sampled signal.

In the above example, we only loaded one .ncs file (a single local field potential, recorded from a specific electrode in the brain) and therefore there is only one label, containing the filename. To plot this data you can simply do plot(csc.tvec,csc.data).

☛ Consider the tvec field in the struct above. If the sampling rate for a given signal is constant, is this field strictly necessary? Can you think of a way to describe such an idealized signal more efficiently (i.e. by taking up less memory)?

☛ How does LoadCSC() represent multiple, simultaneously acquired, signals? A nice way to do so is to use a config field like cfg.fc = FindFiles('*CSC01*.ncs');.

If at some point you want to construct a tsd variable yourself, you can do help tsd to see how. The tsd() function is a constructor for variables of type tsd. LoadCSC() calls this function to create an empty tsd template, and then fills it with data loaded from .ncs files; you can check if the result meets the specification by calling CheckTSD().

There are a number of functions that work with tsd data: some of these can be found in the tsd folder in the GitHub repository. Two other important ones you will meet in this module are restrict() and getd() (which also work on other data types, below).

### Timestamp (TS) data-type

A different data type is needed to describe sets of punctate events (a point process in statistics), such as times of action potentials (spikes) or task events such as reward delivery times. For this we use the TS (timestamp) data type, defined as follows:

• type: string indicating data type: 'ts'
• t: nSignals x 1 cell array, timestamps (in seconds)
• label: nSignals x 1 cell array, labels
• usr: nSignals x nUsr double, optional additional data corresponding to intervals
• cfg: content depends on specific data, but always has a history field.

An example is provided by the function LoadEvents(), which loads the timestamps of events used in this particular experiment (such as the delivery of reward pellets):

%% remember to use Cell Mode in the editor to run this code!
cfg = [];

>> evt

evt =

type: 'ts'
t: {1x109 cell}
label: {1x109 cell}
cfg: [1x1 struct]

Note how several of the fields of the resulting evt struct are cell arrays.

Because we provided LoadEvents() with an empty config input, it by default loads the times of all events it can find. As you can see by the size of the cell arrays, there are 109 labels here. Let's look at some of them:

>> evt.label(1:3) % display first three labels

ans =

'1 or 5 pellet cue'    '1 pellet cue'    '1 pellet dispensed'

Taking the second label as an example, it describes an experimental event: the onset of a cue (tone in this case). The corresponding timestamps (in seconds) can be found in the second .t field:

>> evt.t{2}

ans =

1.0e+03 *

Columns 1 through 8

1.1475    1.1533    1.1706    1.1798    1.2190    1.2255    1.2380    1.2435

(...)

These timestamps completely describe a point process (timestamp data).

☛ Why do you think the event times (in the .t field) are stored in a cell array, rather than in a matrix?

A way to address timestamps by label is provided by the getd() function:

plot(getd(evt,'1 pellet cue'),0,'.k') % retrieve times associated with 1 pellet cue and plot each time against zero

getd() also works for tsd data. Try plotting a specific channel this way.

A different function that loads data into a ts data type is LoadSpikes(). Try it:

S = LoadSpikes([])

Notice how instead of creating an empty config variable and passing it as an input, I now just passed an empty array [] as an input directly. This instructs LoadSpikes() to load all spike files it can find. As you can see from the labels, two different files were loaded: as will be explained below. *.t indicates a file containing spike times from one neuron.

☛ How many spikes did the second neuron emit in this session?

As with tsd data above, you can call the ts constructor ts() to start with a template that you can then fill with data if you want to build your own. The ts folder on GitHub contains some other utility functions that work with timestamp data.

### Interval (IV) data-type

Interval data – matched sets of start and end times – is typically not loaded directly from data files. However, it commonly comes up during analysis, for instance when defining trials, running vs. resting epochs, sharp wave-ripple complexes, et cetera.

Interval data is defined as follows:

• type: string to indicate data type, 'iv'
• tstart: nIntervals x 1 double, interval start times (in seconds)
• tend: nIntervals x 1 double, end times (in seconds)
• usr: nIntervals x nUsr double, optional additional data corresponding to intervals
• cfg: content depends on specific data, but always has a history field.

Some common ways of creating an iv object from scratch are the following:

>> a = iv([1 2]) % define a single interval from 1 to 2

a =

type: 'iv'
tstart: 1
tend: 2
usr: []
cfg: [1x1 struct]

>> b = iv([1 2],[3 3]) % define two intervals, 1 to 3 and 2 to 3

b =

type: 'iv'
tstart: [2x1 double]
tend: [2x1 double]
usr: []
cfg: [1x1 struct]

There are a number of useful functions available that work with interval data. One of the most useful ones is TSDtoIV() which will be demonstrated below. The iv folder on the codebase has a number of functions whose functions you can guess from their names, for instance, IntersectIV() computes the intersection between two sets of intervals (i.e. output only those intervals in A which overlap with intervals in B).

## Data files overview

Our next goal is to learn about the different kinds of data and associated information that make up a typical neural recording session (as an example, we will use Neuralynx data; obviously the details will be different for other systems), and to meet the various loading functions that will enable you to access them in the data type formats introduced above.

Make sure you have the data session R042-2013-08-18 from the shared drive, and that this is placed in a sensible location (NOT in a GitHub or project folder! See Module 1 if this is not obvious). This folder contains data from a single recording session that has been pre-processed so that it is ready for analysis. Such a pre-processed data set is referred to as “promoted”; raw data that has just been recorded is “incoming”, data being pre-processed is “inProcess”. The schematic below (drawn using the dot tool in GraphViz) gives an overview of the major data files and their transformation during pre-processing:

The files you find in a promoted folder such as R042-2013-08-18 are those enclosed in the gray box. They are:

• Each .ncs file (“Neuralynx Continuously Sampled”) contains a single channel of continuously sampled voltage data. The sampling rate and filters for these channels can be configured in the Cheetah data acquisition software. Typically, as in this data set, the sampling rate and filters are set so that these files are local field potentials (LFPs) sampled at 2kHz and filtered between 1 and 475 Hz. It is also possible to have wide-band, 32kHz .ncs files suitable for spike extraction, but these are not included in the current dataset. (We will discuss filtering in a subsequent module.)
• Each .t file contains a set of times – a spike train from a putative neuron. The qualifier “putative” is used because this is extracellular data and spike-sorting is not perfect, so it's likely there will be some spikes missing and some spikes included that are not from this neuron. Always remember this even if I will omit the “putative” from now on for short! *.t files are generated by MClust, a spike sorting tool developed by A. David Redish, from the raw *.ntt (“Neuralynx TeTrode”) files saved by Neuralynx. *.ntt files do not contain continuously sampled data; instead, a one-millisecond snapshot across the channels of a tetrode is stored whenever any of the four channels exceeds a threshold set in Cheetah by the experimenter.
• The *.nvt file (“Neuralynx Video Tracking”) contains the location of the rat as tracked by an overhead camera. For Neuralynx systems, this is typically sampled at 30 Hz. Because the raw files are large, they are usually stored in compressed (zip) format. The .nvt files are in units of camera pixels (typically 640×480).
• The *.Nev file (“Neuralynx EVents”) contains timestamps and labels of events, such as those input by the user during recording, received from experimental components connected to Neuralynx's digital I/O (Input/Output) port, and system messages such as recording start, data loss, et cetera.
• Although not part of this data set, you may encounter .nse files, which contain single electrode spike data.

A critical part of any promoted data set is the following:

• The *keys.m file, referred to as “ExpKeys” or “keys”. This file contains experimenter-provided information that describes this data set. This information is stored as a .m file so that it can be edited and read by standard text editors (rather than having to be loaded into MATLAB to view, as would be the case for a .mat file). This file and the correct format for ExpKeys is explained in more detail here.
• The *metadata.m file, which like the ExpKeys contains descriptive information about the data set, such as start and end times of individual trials, but that is not desirable or practical to include in the ExpKeys file. See here for guidelines on what should go in ExpKeys versus metadata.

Next, we have:

• *wv.mat files. There is one file for each *.t file, containing the average waveforms for that cell.
• *ClusterQual.mat files. Also, one file for each *.t file, containing some cluster quality statistics.

Both of these files are generated by a MATLAB script (CreateCQFile.m) or directly from MClust version 4.1 or higher.

Finally, there is also:

• the *vt.mat file. This contains the position data in tsd format (see above for a description of data types), after potential position artifacts have been removed, and the raw camera pixel units have been converted to centimeters.

NOTE: Some older data sessions may not have this conversion to centimeters done. What units the video data are in is not crucial for this tutorial, but in general it is a good idea to be aware of what these units are!

☛ Look at the contents of the R042-2013-08-18 folder.

Notice how each file is named: all start with R042-2013-08-18 followed by a suffix indicating the file type and (if necessary) an identifier. Applying this naming scheme consistently is a key part of good data management because it enables provenance tracking – which cells from what animal, what session, and what condition are contributing to each plot, et cetera. The rename steps in the above schematic are an important first step.

## Using the wrapped data loaders

Before getting started, create a folder with today's date in your project folder, and create a new file in it named sandbox.m. These sandbox files are not meant to be re-used or committed to GitHub – as the name indicates, they are just a temporary file that is easier to work with compared to typing everything directly into the MATLAB Command Window.

Next, make sure that your path is set correctly using a Shortcut button. Also, set MATLAB's current directory to the data folder (R042-2013-08-18); you can do this either using the MATLAB GUI (I often paste from Explorer into MATLAB) or by using the cd command.

All instructions that follow should be pasted into a cell in this sandbox file and executed from there (Ctrl-Enter when a cell is selected), unless they are prefaced with » to indicate the Command Prompt.

The vandermeerlab code base contains “wrappers” of data loading functions that return the data in the data types discussed above. You will notice that each loading function, discussed below, takes in a cfg (“configuration”) variable, which is used to specify parameters and options such as the filenames to be loaded. This use of cfg variables is shared by many other vandermeerlab data analysis functions (as well as those in the FieldTrip toolbox), and is highly encouraged when you start writing your own code: it encourages well-organized code and enables provenance tracking, two principles of good programming practice.

To find out what cfg options are used by a given function, use the help (or doc) function on each data loader, e.g. doc LoadCSC. Some functions will run using default options when you pass an empty cfg ([]), whereas others will require you to input something.

This loads raw Neuralynx position data (*.nvt). If no filename is specified in the input cfg, LoadPos() checks if a single .Nvt file is found in the current directory and loads that one:

>> posdata = LoadPos([]); % note empty config
>> posdata

posdata =

type: 'tsd'
tvec: [1x131898 double]
data: [2x131898 double]
label: {'x'  'y'}
cfg: [1x1 struct]

Note that LoadPos() provides some basic information on the quality of the data (percentage of samples tracked) – consistent with the "garbage in, garbage out" principle, this helps ensure that you are aware of any potential issues at the raw data stage.

Because the .Nvt files are large, it is often convenient to save this posdata variable as a .mat file. This should be named Rxxx-yyyy-mm-dd-vt.mat (for mice, remember to replace R with M).

Note that the data field now has dimensionality [2 x nSamples]; this is because there is both x and y data as indicated by the label field. So, if you wanted to plot x against y, you could do plot(posdata.data(1,:),posdata.data(2,:),'.');, but a more general approach that doesn't require knowing which variable is which dimension is plot(getd(posdata,'x'),getd(posdata,'y'),'.');.

To load a .Ncs file, containing sampled data (a hippocampal local field potential in this case):

cfg = []; % starting with an empty config is good practice -- that way you avoid carryover of previous values!
cfg.fc = {'R042-2013-08-18-CSC05a.ncs'};
csc = LoadCSC(cfg);

This gives the following struct of type tsd:

>> csc

csc =

type: 'tsd'
tvec: [8802816x1 double]
data: [1x8802816 double]
label: {'R042-2013-08-18-CSC05a.ncs'}
cfg: [1x1 struct]

Note that the format is the same as for the position data above; this is because both LoadPos() and LoadCSC() return TSDs.

☛ Try plotting the LFP you just loaded. The units on the horizontal axis should be time!

LoadCSC() outputs some information about the files being loaded; in particular the number of “bad blocks”. These will be explored in Module 3 (short version: bad blocks indicate a problem with the recording system and should be fixed).

Finally, the cfg field has the ExpKeys, the SessionID (R042-2013-08-18), the headers (.hdr) for each .Ncs file, and the history.

By default, LoadEvents() returns a TS with the labels and timestamps of all unique strings found in the EventStrings:

>> evt = LoadEvents([])

evt =

type: 'ts'
t: {1x9 cell}
label: {1x9 cell}
cfg: [1x1 struct]

evt.label(:) will reveal the familiar list of events introduced above. However, by using the cfg file, we can get something more specific:

%%
cfg = [];
cfg.eventList = {'TTL Output on AcqSystem1_0 board 0 port 0 value (0x0004).','TTL Output on AcqSystem1_0 board 0 port 0 value (0x0040).'};
cfg.eventLabel = {'FoodDelivery','WaterDelivery'};

evt =

type: 'ts'
t: {[1x9 double]  [1x9 double]}
label: {'FoodDelivery'  'WaterDelivery'}
cfg: [1x1 struct]

By specifying which EventString is associated with which human-readable event ('FoodDelivery','WaterDelivery') we now have a more user-friendly events variable. Of course, this requires knowing how these events map onto the event codes (given here in cfg.eventList) generated by the system. Make sure that you know what the event codes generated by your system mean!

LoadSpikes() loads spike trains (times of action potentials) in *.t files. By default, it loads all such files:

>> S = LoadSpikes([])

S =

type: 'ts'
t: {1x67 cell}
label: {1x67 cell}
cfg: [1x1 struct]
usr: [1x1 struct]

As you can see, this loaded spike data from 67 neurons. The usr field by default contains the tetrode number from which each spike train was recorded; this behavior can be disabled by setting cfg.getTTnumbers = 0. If you wish to load *._t files (containing spikes from neurons of questionable cluster quality), do cfg.load_questionable_cells = 1;. See the function documentation for further options.

Neuralynx supplies a set of functions that load the raw data into MATLAB (included in your GitHub clone). We will use these one by one in the following subsections. A common theme is that all of these functions will output a Timestamps variable, indicating when each data sample or event occurred. Data acquisition systems need to solve the engineering challenge of aligning many different kinds of signals (video, neural activity, events) on a common timebase, so that relationships between them can be analyzed. These Timestamps are what ties the different data files together. By default, Neuralynx data loaders return timestamps in microseconds (us).

Why use these functions instead of the wrappers? It is often important to test exactly what is in the raw data files you are loading, especially when there is missing or corrupt data, or it is unclear what processing the wrappers may be doing. For that purpose, it is easier not to have to deal with the wrapper functions.

The low-level loading function for video data is Nlx2MatVT. Deploy it as follows:

%% load video data (make sure the VT1.zip file is unzipped first and now present in MATLAB's working folder!)
[Timestamps, X, Y, Angles, Targets, Points, Header] = Nlx2MatVT('VT1.nvt', [1 1 1 1 1 1], 1, 1, [] );

The abundance of ones in the function call are basically saying, “load everything” (type help Nlx2MatVT for the gory details). Notice that the output arguments (with the exception of the Header) share a common dimension:

>> whos
Name              Size                    Bytes  Class     Attributes

Angles            1x131898              1055184  double
Points          400x131898            422073600  double
Targets          50x131898             52759200  double
Timestamps        1x131898              1055184  double
X                 1x131898              1055184  double
Y                 1x131898              1055184  double              

We appear to have 131898 samples of “X” and “Y”, the main variables of interest, with corresponding timestamps. We can plot X against Y:

>> plot(X,Y);

to get:

You can see the outline of a modified T-maze used for this recording session (rotated 90 degrees). Notice that this way of plotting the position data reveals something strange going on: there are many abrupt jumps to the (0,0) position! As it turns out, these are Neuralynx's way of indicating missing data (samples on which no position data could be acquired).

☛ Plot X against Y again, but this time without the missing data. A good way of doing this is to first define a variable keep_idx that contains the indices of those samples which you want to keep (i.e. that are not (0,0)).

Inspect the resulting plot. The shape of the T-maze is now more clear; also visible are two roughly circular areas. These are the “pedestals” on which the rat can relax at the beginning and end of the recording session, as well as in between trials (if you want more details about what is going on this task, see here).

I plotted my version as follows:

%% plot video data -- use a new cell so that you can rerun this without also reloading the data
fh = figure; set(fh,'Color',[0 0 0]);
plot(X(keep_idx),Y(keep_idx),'.','Color',[0.7 0.7 0.7],'MarkerSize',1); axis off;

The first line opens a new figure, and uses its handle to set the background to black. The second line uses additional arguments for plot() to plot the X and Y data points not as a connected line, but as individual points of size 1 in a gray color. The result:

It is useful to know how to save figures to a format that is easy to view:

set(gcf, 'InvertHardCopy', 'off');
print(gcf,'-r75','-dpng','module2_xvsy2.png');

The first line is necessary to preserve the black background. The second line saves a 75dpi PNG image. PNG is a good choice for saving MATLAB images, because it uses lossless compression and therefore will not cause ugly artifacts the way JPEG will.

Let's look at the Timestamps next, by plotting the X data as a function of time:

plot(Timestamps(keep_idx),X(keep_idx),'.r','MarkerSize',3)
box off;
set(gca,'FontSize',24);

Note the use of some different plotting options here, to give:

The horizontal axis is still in Neuralynx's raw data units (us).

☛ Convert the Timestamps to seconds, and replot.

If you look closely, you can spot some gaps in the data (times when no position data is plotted).

☛ (Optional exercise to test your MATLAB skills) Are these gaps because of (0,0) samples that have been removed? Or because there are no records in the data for those times?

As you should have ascertained, there are in fact two short gaps in the data. These occur on purpose to separate behavior on the T-maze (when you can see the X coordinate changing as the rat runs) from the times when the rat is resting on the pedestal. In the Cheetah software this can be done by simply turning off Recording and then turning it back on. (Sneak preview: although doing this is helpful for some applications, it can be problematic for analyses that assume your data is continuous. We will encounter this when we start using the FieldTrip toolbox later.)

☛ Determine the video tracker sampling rate from the Timestamps variable. Watch out for gaps in the data! (Hint: the diff() function is useful here!)

This concludes the introduction to Neuralynx video data. The other outputs of Nlx2MatVT are not used for typical analyses.

The Neuralynx loader for Ncs files is Nlx2MatCSC. Use it thusly:

clear all;
fname = 'R042-2013-08-18-CSC05a.ncs';
[Timestamps, ~, SampleFrequencies, NumberOfValidSamples, Samples, Header] = Nlx2MatCSC(fname, [1 1 1 1 1], 1, 1, []);

..and inspect the result:

>> whos
Name                        Size                  Bytes  Class     Attributes

NumberOfValidSamples        1x17193              137544  double
SampleFrequencies           1x17193              137544  double
Samples                   512x17193            70422528  double
Timestamps                  1x17193              137544  double
fname                       1x9                      18  char           

Now we get only 17193 Timestamps, a surprising number because it is substantially less than the number of video tracking timestamps we got (on the order of 10 times less), even though the video tracking data was only sampled at about 30 Hz, and this LFP data is supposed to be sampled at something like 2kHz! As it turns out, Neuralynx Ncs data is stored in blocks of 512 samples, with only the first sample of each block timestamped. Hence the [512 x 17193] size of Samples, which contains the actual time-varying voltage signal. This is not a very convenient format for plotting timestamps against voltage, the way we typically would like to do. This is one reason why we generally don't use these low-level loading functions, but instead wrap them in a function that is more user-friendly. These loading functions are discussed in the next section.

For now, one more point about this data: Samples is not in units of volts, but on a scale internal to the Neuralynx system. To know how these “A-D bits” (analog-to-digital) correspond to real voltages, we need to look in the Header:

>> Header

'## File Name C:\CheetahData\2013-08-18_09-06-16\CSC49.ncs'
'## Time Opened (m/d/y): 8/18/2013  (h:m:s.ms) 9:6:36.546'
'## Time Closed (m/d/y): 8/18/2013  (h:m:s.ms) 10:26:2.875'
''
'-FileType CSC'
'-FileVersion 3.3.0'
'-RecordSize 1044'
''
'-CheetahRev 5.6.3 '
''
'-HardwareSubSystemName AcqSystem1'
'-HardwareSubSystemType DigitalLynxSX'
'-SamplingFrequency 2000'
''
'-AcqEntName CSC49'
'-InputRange 2000'
'-InputInverted True'
''
'-DSPLowCutFilterEnabled True'
'-DspLowCutFrequency 1'
'-DspLowCutNumTaps 0'
'-DspLowCutFilterType DCO'
'-DSPHighCutFilterEnabled True'
'-DspHighCutFrequency 475'
'-DspHighCutNumTaps 128'
'-DspHighCutFilterType FIR'
'-DspDelayCompensation Disabled'
'-DspFilterDelay_µs 1984'

Aha, the -ADBitVolts entry gives us the conversion from the raw data to volts. Another reason to wrap this lowlevel function into something that does the conversion for us! As you can see, the header contains some other information, which will be discussed in more detail in later modules.

*.Nev (Neuralynx Event) files contain timestamps of various task events. Use as follows:

fn = FindFile('*Events.nev');
[EVTimeStamps, EventIDs, TTLs, EVExtras, EventStrings, EVHeader] = Nlx2MatEV(fn,[1 1 1 1 1],1,1,[]);

As before, all the ones in the function call make sure we load everything. In return, we get:

>> whos
Name                Size              Bytes  Class     Attributes

EVExtras            8x462             29568  double
EVTimeStamps        1x462              3696  double
EventIDs            1x462              3696  double
EventStrings      462x1              103104  cell
TTLs                1x462              3696  double
fn                  1x44                 88  char  

Each of the 462 events in this file has a timestamp (EVTimeStamps) and a description (EventStrings) as well as some other information we generally don't need. Let's inspect some of the EventStrings:

>> EventStrings(1:13)

ans =

'Starting Recording'
'Stopping Recording'
'Starting Recording'
'TTL Input on AcqSystem1_0 board 0 port 1 value (0x0020).'
'TTL Input on AcqSystem1_0 board 0 port 1 value (0x0000).'
'TTL Input on AcqSystem1_0 board 0 port 1 value (0x0020).'
'TTL Input on AcqSystem1_0 board 0 port 1 value (0x0000).'
'TTL Input on AcqSystem1_0 board 0 port 1 value (0x0080).'
'TTL Input on AcqSystem1_0 board 0 port 1 value (0x0000).'
'TTL Output on AcqSystem1_0 board 0 port 0 value (0x0004).'
'TTL Input on AcqSystem1_0 board 0 port 1 value (0x0080).'
'TTL Output on AcqSystem1_0 board 0 port 0 value (0x0000).'
'TTL Input on AcqSystem1_0 board 0 port 1 value (0x0000).'

The meaning of these cryptic strings depends on the specific experimental setup. “AcqSystem1_0 board 0 port 0” and “1” refer to connectors on the Neuralynx data acquisition mainbox, which can be hooked up to various experimental peripherals such as photobeams, levers, and pellet dispensers.

In this session, Input/Output (I/O) Port 0 was configured as Output, controlling a pellet dispenser and a valve (for sucrose solution delivery). Port 1 was set to be an Input, receiving inputs from three photobeams (one on the central stem of the maze, and one each for each reward site on either end of the maze arms). The EventStrings above refer to the status of an I/O port, represented as a hexadecimal number (indicated by the prefix “0x”). The activation of each peripheral is associated with a unique number.

As with the previous low-level loading functions, the Neuralynx loader does not provide us directly with what we want. We'd like a loader that just gives us the times for the events we are interested in, without us having to figure out what hexadecimal number they correspond to and then pull out the matching times. These wrapped loaders will be introduced below.

☛ (Optional exercise to test your MATLAB skills) Find out which EventString corresponds to which input or output (food pellet reward on left arm, sucrose water reward on right arm, left reward photobeam, right reward photobeam, central stem photobeam) by plotting the location of the animal at the time of each event.

Hint: example pseudocode for a nice approach to find this out would look like the following:

get list of unique event strings to process -- unique()

for each event string

find indices of events that match current event string -- strncmp()

get timestamps for matched events

find indices of position timestamps that are closest in time -- nearest_idx()

get x and y coordinates of closest timestamps

plot x and y coordinates on top of position plot

end

### Other

The other files of interest are all MATLAB .mat files which can be loaded directly using the load() function.

## Putting it all together

Here are two examples that illustrate some simple operations you are now equipped to do. You should run them and make sure you understand what is happening – how raw data is transformed by some simple steps:

%% example 1: use of restrict()

plot(getd(left_pos,'x'),getd(left_pos,'y'),'.'); % looks like right trials! camera reverses image, can fix with set(gca,'YDir','reverse')

%% example 2: interplay between tsd and iv data

please = []; please.fc = ExpKeys.goodSWR(1); % local field potential with good "sharp wave-ripple" events

% detect possible artifacts
cfg = [];
cfg.method = 'zscore'; % first normalize the data
cfg.threshold = -8;
cfg.minlen = 0; % no minimum length on events to detect
cfg.dcn = '<'; % detect intervals with z-score lower than threshold
artifact_iv = TSDtoIV(cfg,lfp); % creates iv with start and end times of possible artifacts

% plot detected intervals
cfg = []; cfg.display = 'tsd'; % also try 'iv' mode!
PlotTSDfromIV(lfp,artifact_iv,lfp)

☛ (Optional exercise to test your understanding) Use the function IntersectIV() to only keep potential artifacts that occur when the rat's x-position is larger than 300.

NOTE: if you are on a Mac, you might get an error related to the nearest_idx3 function; you can fix that for now by changing this to nearest_idx in the PlotTSDfromIV function.

## Discussion

, 2021/06/04 04:02

, 2021/06/04 09:14

, 2021/06/04 13:12

, 2021/06/04 15:34

, 2021/06/05 19:06

, 2021/06/06 23:18

, 2022/02/09 16:36

<a href=https://onion.hdrhdr.com/>адрес гидры в тор</a>

, 2022/03/20 09:31

viagra uk <a href=“https://oneviagrweb.com/ ”>buy cheap viagra online</a>

, 2022/03/22 05:18

ivermectin tablets <a href=“https://ivermectinscdr.com/ ”>stromectol for sale</a>

, 2022/03/22 20:59

Sеlf-Imрrоvemеnt and success go hаnd in hand. Taking the steрs to mаkе yоurself а bеtter and morе wеll-rоunded individuаl will рrovе to bе а wise decision.

, 2022/03/24 11:17

ivermectin where to buy <a href=“https://stromectolthza.com/ ”>ivermectin price uk</a>

, 2022/03/24 14:25

edegra sildenafil <a href=“https://sildenafilwttu.com/ ”>sildenafil citrate 100</a>

, 2022/03/25 03:12

, 2022/03/25 04:58

, 2022/03/25 09:42

purchase ivermectin <a href=“https://ivermectinscdr.com/ ”>ivermectin australia</a>

, 2022/03/27 05:30

ivermectin over the counter <a href=“https://ivermectinscdr.com/ ”>cost of ivermectin lotion</a>

, 2022/03/27 08:35

ivermectin medication <a href=“https://edstromectolzg.com/ ”>stromectol buy</a>

, 2022/03/29 13:05

, 2022/03/29 14:04

stromectol online canada <a href=“https://stromectolons.com/ ”>ivermectin 6 mg tablets</a>

, 2022/03/29 23:24

ivermectin malaria <a href=“https://stromectoldm.com/ ”>stromectol where to buy</a>

, 2022/04/01 04:45

purchase oral ivermectin <a href=“https://stromectolsujk.com/ ”>price of ivermectin</a>

, 2022/04/01 07:43

stromectol price usa <a href=“https://stromectololsz.com/ ”>ivermectin new zealand</a>

, 2022/04/01 15:06

, 2022/04/02 07:54

ivermectin 2ml <a href=“https://stivermectinanti.com/ ”>where to buy ivermectin cream</a>

, 2022/04/03 06:29

where can i buy oral ivermectin <a href=“https://ivermectinths.com/ ”>stromectol xr</a>

, 2022/04/07 17:37

Army Canned http://www.oceanenergyfood.com/army-canned.html スーパーコピーブランドスーパーコピー時計偽物通販店 https://hffd5527.fukuwarai.net/ Medium Mill Machine Flour https://www.ctflourmill.com/medium-mill-machine-flour/

, 2022/04/07 23:30

Close Tolerance Machining Parts https://www.gmpmetalwork.com/tag/close-tolerance-machining-parts/ Pressure Washer https://www.hysapientia.com/pressure-washer スーパーコピー通販口コミが良い靴コピー激安専門店 https://x5wk3.mynikki.jp/

, 2022/04/08 02:02

Cnc Milled Machinery Components https://www.gmpmetalwork.com/tag/cnc-milled-machinery-components/ iPhone Lcd And Touch Screen Black 6S http://www.scrcmall.com/iphone-lcd-and-touch-screen-black-6s.html スーパーコピーブランドyamada https://w2qrp.bloggeek.jp/

, 2022/04/08 05:04

SS22B SMB Schottky Rectifier Diode https://www.mlccdiode.com/ss22b-smb-schottky-rectifier-diode.html スーパーコピー時計台湾 https://jpj05.corpblog.jp/ Horizontal Slatwall Suppliers https://www.cnhuaxiajie.com/horizontal-slatwall-suppliers/

, 2022/04/08 07:26

Tuna Tin Food http://www.oceanenergyfood.com/tuna-tin-food.html Exercise Bike https://www.sdsunshinetrade.com/exercise-bike/ ブランド財布コピー口コミ https://htht56.exblog.jp/

, 2022/04/08 15:31

plumbing fittings pp female elbow https://www.ehaoplastic.com/tag/plumbing-fittings-pp-female-elbow/ ウブロ時計スーパーコピー代引きウブロスーパーコピー韓国 http://fdgnsd.jugem.jp/ Food Vacuum Sealer https://www.hysapientia.com/food-vacuum-sealer.html

, 2022/04/08 19:24

Street Flood Light https://www.gdworklight.com/street-flood-light.html ブランドコピー靴ケースブランドコピー https://ghdgdfg.exblog.jp/ Best Diabetes Monitoring Device https://www.e-linkcare.com/best-diabetes-monitoring-device/

, 2022/04/08 21:44

SS14 SMA Schottky Rectifier https://www.mlccdiode.com/ss14-sma-schottky-rectifier.html 韓国シュプリームスーパーコピーブランド専門店 https://jgfd452.fukuwarai.net/ Push Switch 250v https://www.sokenswitch.com/tag/push-switch-250v/

, 2022/04/09 03:16

1250A 31.5KA Vacuum Interrupter for Indoor Circuit Breaker https://www.777vi.com/1250a-31-5ka-vacuum-interrupter-for-indoor-circuit-breaker.html ブランド財布偽物ブランドコピー秋冬新作 http://fgjsg.jugem.jp/ Cryogenic Oxygen Plant https://www.liquid-oxygen-plant.com/cryogenic-oxygen-plant/

, 2022/04/09 05:42

シュプリームブランドスーパーコピー通販専門店 http://kghgh.ffsagami.com/ Industrial Fans https://www.gdworklight.com/industrial-fans Garden Guardrail Pvc Extrusion https://www.pvcexterior.com/garden-guardrail-pvc-extrusion/

, 2022/04/09 09:31

, 2022/04/09 13:53

ブランドコピーtシャツ http://b33.chip.jp/yane121/ Q Switched Alexandrite Laser https://www.chineselaser.com/q-switched-alexandrite-laser/ BAV70W High Speed Switching Double Diode https://www.mlccdiode.com/bav70w-high-speed-switching-double-diode.html

, 2022/04/09 19:00

America Electric Scooter https://www.hezzobike.com/america-electric-scooter/ 楽天市場ブランドコピー代引き国内発送の通販 http://ytiuyot.ffsagami.com/ Tripod https://www.luckystarlink.com/tripod

, 2022/04/10 01:06

, 2022/04/10 03:34

most popular hdpe brass female thread socket https://www.ehaoplastic.com/tag/most-popular-hdpe-brass-female-thread-socket/ ウブロスーパーコピー韓国ウブロスーパーコピー口コミ https://gd4grh.exblog.jp/ Portable Industrial Fan https://www.gdworklight.com/portable-industrial-fan.html

, 2022/04/10 07:06

スーパーコピーブランド販売ブランドコピー通販専門店 https://gbu-zamoskvoreche.ru/ Sunscreen stick https://www.bathconceptc.com/sunscreen-stick-pet-care/ 1N4148 Small Signal Fast Switching Diode https://www.mlccdiode.com/1n4148-small-signal-fast-switching-diode.html

, 2022/04/10 19:19

ブランドコピー売ってる店大阪雑談総合掲示板爆サイ関西版 http://gvmfgh.ffsagami.com/ 2N3904 NPN Epitaxial Silicon General Purpose Transistor https://www.mlccdiode.com/2n3904-npn-epitaxial-silicon-general-purpose-transistor.html Graphite Molds For Casting https://www.nhdgraphite.com/graphite-molds-for-casting/

, 2022/04/10 21:41

シャネルスーパーコピーシャネルバッグコピー通販店 https://hfd254.anime-festa.com/ Nolinear Optical Beta-Barium Borate BBO Crystal https://www.coupletech.com/nolinear-optical-beta-barium-borate-bbo-crystal.html Hot Selling Led Illuminated Cooler Box https://www.wanmaroto.com/tag/hot-selling-led-illuminated-cooler-box/

, 2022/04/10 23:49

, 2022/04/11 01:58

Electric Wire Rope Hoist https://www.hugonglift.com/electric-wire-rope-hoist Air Compressor 200psi https://www.mikovsaircompressor.com/air-compressor-200psi/ ブランドコピー http://jophyrt.ffsagami.com/

, 2022/04/11 05:06

Best-Selling China Natural Finish Square 3 Tier Solid Vintage Small Wood Shelf Wall https://www.hywoodbox.com/best-selling-china-natural-finish-square-3-tier-solid-vintage-small-wood-shelf-wall-product/ コーチペアブレスレットスーパーコピーブランド http://ori585.jugem.jp/ 8KP Series Leaded TVS Diodes https://www.mlccdiode.com/8kp-series-leaded-tvs-diodes.html

, 2022/04/11 07:30

Car Seat Modificaiton https://www.mikufoam.com/car-seat-modificaiton/ 15A 1000V GBU1510 Bridge Rectifier https://www.mlccdiode.com/15a-1000v-gbu1510-bridge-rectifier.html コピーの時計韓国旅行口コミ掲示板コネストコミュニティ https://fgds424.anime-festa.com/

, 2022/04/11 11:41

オメガスーパーコピー時計販売店オメガコピー http://dfhjds.ffsagami.com/ Spicy Canned Pickled Cabbage http://www.oceanenergyfood.com/spicy-canned-pickled-cabbage China Chipboard Screw https://www.allboltsandnuts.com/china-chipboard-screw/

, 2022/04/11 21:10

スーパーコピー時計ロレックス偽物級品 http://fgertwet.ffsagami.com/ Motorized Lighting https://www.alightlux.com/motorized-lighting-tag/ Electric Chain Block https://www.hugonglift.com/electric-chain-block.html

, 2022/04/12 06:00

, 2022/04/12 09:41

, 2022/04/12 19:14

, 2022/04/12 21:46

, 2022/04/13 01:07

, 2022/04/13 09:05

Transparent Plastic Film Made In China https://www.wigglewires.com/tag/transparent-plastic-film-made-in-china/ 人気ブランド時計スーパーコピー販売専門店銀座時計 http://b31.chip.jp/vghkfh 1N4148WT Small Signal Switching Diode https://www.mlccdiode.com/1n4148wt-small-signal-switching-diode.html

, 2022/04/13 13:29

アルマーニスーパーコピー時計 https://w01bs.myjournal.jp/ WiFi Native 1080P Projector Ultra Portable For Home Entertainment https://www.luckystarlink.com/wifi-native-1080p-projector-ultra-portable-for-home-entertainment.html Front Tempered Glass for Display https://www.saidaglass.com/front-tempered-glass-for-display/

, 2022/04/14 01:53

MgO Single Crystal Substrate https://www.coupletech.com/mgo-single-crystal-substrate.html Rohs Complaint Flat Coil Spring https://www.wigglewires.com/tag/rohs-complaint-flat-coil-spring/ ブランドコピー違法 https://bfol20.golog.jp/

, 2022/04/14 03:59

ブランドコピー東京 https://ds4gdhj.exblog.jp/ Lldpe Plastic Hand Use Stretch Film https://www.wigglewires.com/tag/lldpe-plastic-hand-use-stretch-film/ Manual Stacker Truck https://www.hugonglift.com/manual-stacker-truck.html

, 2022/04/14 07:16

RL207 Diodes https://www.mlccdiode.com/rl207-diodes.html Nhà kính t? ??ng cho cà chua https://www.wigglewires.com/tag/nha-kinh-tu-dong-cho-ca-chua/ スーパーコピー時計n級 https://ghdgdfg.exblog.jp/

, 2022/04/14 21:03

ブランドコピー品英語 http://iutt87.ffsagami.com/ Ytterbium Doped YAG Crystal https://www.coupletech.com/ytterbium-doped-yag-crystal.html Black Printed Front Cover Glass https://www.saidaglass.com/black-printed-front-cover-glass/

, 2022/04/15 01:47

Most Comfortable Running Shoes https://www.ttgshoes.com/most-comfortable-running-shoes/ Outdoor Work Light https://www.gdworklight.com/outdoor-work-light.html ブランドスーパーコピーブランドコピー財布スーパー http://dght8d5sf.ffsagami.com/

, 2022/04/15 03:57

Ceramic Tea Cup With Infuser https://www.winwinceramics.com/ceramic-tea-cup-with-infuser/ BAV70WS Switching Diode https://www.mlccdiode.com/bav70ws-switching-diode.html ヴェルサーチ時計スーパーコピー http://yuuy.ffsagami.com/

, 2022/04/15 11:36

Automatic Pouch Filling And Sealing Machine https://www.qdylmachinery.com/automatic-pouch-filling-and-sealing-machine/ General Purpose Rectifier https://www.mlccdiode.com/general-purpose-rectifier ブランド財布コピー通販 https://dhjmjp.exblog.jp/

, 2022/04/15 17:25

, 2022/04/15 21:30

Carbon Wheelchair https://www.excellentwheelchairs.com/carbon-wheelchair/ KTP Crystal for SHG and OPO https://www.coupletech.com/ktp-crystal-for-shg-and-opo.html ウブロビッグバンコピースーパーコピー時計通販専門店 https://dfef87d.ko-co.jp/

, 2022/04/15 23:54

DKDP EO Q Switch ( Single-ended electrode ) https://www.coupletech.com/dkdp-eo-q-switch-single-ended-electrode-.html ブランドコピー専門通販店信頼性 https://blog.goo.ne.jp/87retwdf Butylated Hydroxytoluene https://www.debornchem.com/butylated-hydroxytoluene/

, 2022/04/16 05:27

Pe Breathable Film Line https://www.wellsonmachinery.com/pe-breathable-film-line/ FR1A Thru FR1M Fast Recovery Rectifier https://www.mlccdiode.com/fr1a-thru-fr1m-fast-recovery-rectifier.html iphone11手帳型ケースブランドコピー https://hgkje.cocolog-nifty.com/

, 2022/04/16 09:02

Wire Mesh Conveyor https://www.yfcheng.com/wire-mesh-conveyor/ SS32 SMC Schottky Rectifier Diode https://www.mlccdiode.com/ss32-smc-schottky-rectifier-diode.html リシャールミル時計コピー楽天ブランドコピーのブログ http://wrwe4rw.jugem.jp/

, 2022/04/16 19:33

スーパーコピー見分け方時計 https://dfg84fdg.ko-co.jp/ Heavy Duty Box https://www.utebox.com/heavy-duty-box/ TMR Series CHIP TYPE, HIGH RELIABILITY https://www.mlccdiode.com/tmr-series-chip-type-high-reliability.html

, 2022/04/16 23:21

スーパーコピーブランドの級品通販専門店なら https://ugrk8.doorblog.jp/ Plastic Water Jug https://www.nonstoppallet.com/plastic-water-jug/ Outdoor Garden Storage Box https://www.hysapientia.com/outdoor-garden-storage-box.html

, 2022/04/17 05:26

Antifoaming Chemicals https://www.soxydefoamer.com/antifoaming-chemicals/ BAV19 Small Signal Switching Diodes https://www.mlccdiode.com/bav19-small-signal-switching-diodes.html 店舗コピーポスター名刺印刷製本のキンコーズジャパン https://aulaz.myjournal.jp/

, 2022/04/17 09:31

, 2022/04/17 21:07

iphoneケースブランドコピー激安 https://blog.goo.ne.jp/detytydgf Web Camera Webcam https://www.yourlite-smart.com/web-camera-webcam/ MMBT8050 NPN Silicon Epitaxial Planar Transistor https://www.mlccdiode.com/mmbt8050-npn-silicon-epitaxial-planar-transistor.html

, 2022/04/17 23:23

, 2022/04/18 01:31

Best Color Inkjet Printer https://www.ydmuvprinter.com/best-color-inkjet-printer/ スーパーコピー時計バックスケルトンiwc https://blog.goo.ne.jp/f2ds1f Single Synthetic Crystal Quartz https://www.coupletech.com/single-synthetic-crystal-quartz.html

, 2022/04/18 03:35

Solar Lights https://www.hysapientia.com/solar-lights ブランドバッグコピーブランド財布コピー販売 http://tyte5te.ffsagami.com/ Absorbing Clolumn Packing https://www.kelleychempacking.com/absorbing-clolumn-packing/

, 2022/04/18 09:04

SK120 Schottky Rectifier https://www.mlccdiode.com/sk120-schottky-rectifier.html スーパーコピーブランドバッグ財布時計通販市場 http://uhgfh.ffsagami.com/ Plastic Engineering Company https://www.huasupa.com/plastic-engineering-company/

, 2022/04/18 13:20

Emergency Food Rations http://www.oceanenergyfood.com/emergency-food-rations.html スーパーコピー時計級品ブランドコピー時計代引き専門店 https://jedsf.side-story.net/ Frozen Seafood Packaging https://www.advanmatchpac.com/frozen-seafood-packaging/

, 2022/04/18 21:13

オメガスーパーコピーオメガ偽物時計品激安専門店 https://blog.goo.ne.jp/rete7ewr Frozen Alcohol Pouches https://www.minflypackaging.com/frozen-alcohol-pouches/ Rectifier Diode S8M 8A 1000V https://www.mlccdiode.com/rectifier-diode-s8m-8a-1000v.html

, 2022/04/19 01:43

DKDP EO Q Switch ( Single-ended electrode ) https://www.coupletech.com/dkdp-eo-q-switch-single-ended-electrode-.html Eco-Products https://www.redgrasspak.com/eco-products/ スーパーコピーブランドスーパーコピー級品通販店 https://trf56t4.ko-co.jp/

, 2022/04/19 03:54

Lever Block 3 Ton https://www.hugonglift.com/lever-block-3-ton.html スーパーコピー時計スーパーコピー財布 https://fghg5.naganoblog.jp/ 1530 Cnc Router https://www.tekaicnc.com/1530-cnc-router/

, 2022/04/19 07:08

Portable Cutlery Set https://www.naturecutlery.com/portable-cutlery-set/ ベビー服ブランドコピー https://fghf54.exblog.jp/ iPhone Lcd And Touch Screen iPhone Oled And Touch Screen http://www.scrcmall.com/iphone-lcd-and-touch-screen-iphone-oled-and-touch-screen

, 2022/04/19 09:51

ブランドコピー品英語 http://uyoty.ffsagami.com/ MBRS540 5A 40V Schottky Rectifier https://www.mlccdiode.com/mbrs540-5a-40v-schottky-rectifier.html Cnc Bending Press Brake https://www.wojiecnc.com/cnc-bending-press-brake/

, 2022/04/19 15:01

Canned Chicken Healthy http://www.oceanenergyfood.com/canned-chicken-healthy.html H14 Subtype Influenza https://www.xabt-biotech.com/h14-subtype-influenza/ 深センブランドコピー https://hg6yr5gd.ko-co.jp/

, 2022/04/19 19:10

ブランドコピー匂い https://sdgja.ko-co.jp/ N4 Tube https://www.nickelalloyworld.com/n4-tube/ 630A 20KA Vacuum Interrupter for Indoor Circuit Breaker https://www.777vi.com/630a-20ka-vacuum-interrupter-for-indoor-circuit-breaker.html

, 2022/04/19 21:40

Work Light Compliance With Makita Battery https://www.gdworklight.com/work-light-compliance-with-makita-battery.html Embossed PP Spun Bonded Non Woven Fabric https://www.wshclothingtrims.com/embossed-pp-spun-bonded-non-woven-fabric/ メンズ腕時計ブランドコピー https://sfs61ffs.anime-movie.net/

, 2022/04/19 23:47

スーパーコピーブランド服メンズレディース https://fryfis.gjpw.net/ Flour Packing Machine https://www.qdylmachinery.com/flour-packing-machine/ Portable Industrial Fan https://www.gdworklight.com/portable-industrial-fan.html

, 2022/04/20 01:50

Comprehensive Strength Tester https://www.jnyytech.com/comprehensive-strength-tester/ Pockels Cell https://www.coupletech.com/pockels-cell 韓国ハイブランドコピーファッション https://hgkuts.cocolog-nifty.com/

, 2022/04/20 05:56

, 2022/04/20 13:26

Hand Knitted Womens Sweaters https://www.qqknit.com/hand-knitted-womens-sweaters/ スーパーコピー時計柵 http://uoytu.ffsagami.com/ Furniture Hinge https://www.zongyihardware.com/furniture-hinge

, 2022/04/20 17:41

, 2022/04/20 21:25

スーパーコピー口コミ時計 https://fgdfr.naganoblog.jp/ Engine Block Blank https://www.zhdlen.com/engine-block-blank/ ISO14443A ISO7816 Dual Interface Smart Chip Card https://www.lexsmartcard.com/iso14443a-iso7816-dual-interface-smart-chip-card.html

, 2022/04/20 23:38

Lcd Backlight https://www.linflor-tech.com/lcd-backlight/ Logo Colorful Temperature Changing Nail Polish https://www.colexbeauty.com/logo-colorful-temperature-changing-nail-polish.html 韓国ブランドコピー品 https://htft5757ik.fukuwarai.net/

, 2022/04/21 03:54

Plaid Polar Fleece Fabric https://www.frontiertextile.com/plaid-polar-fleece-fabric/ 2.0 the Water Pump https://www.ruvjs.com/2-0-the-water-pump 韓国ブランドコピー空港 https://sdgja.ko-co.jp/

, 2022/04/21 05:59

Control Valve With Motor https://www.hoyeefluid.com/control-valve-with-motor/ フェラーリ通販シャネルコピーブランド代引きの https://truew.indiesj.com/ Manual glass Polishing Machine With Coated Glass Membrane Remove Function https://www.zhuodacn.com/manual-glass-polishing-machine-with-coated-glass-membrane-remove-function.html

, 2022/04/21 09:28

, 2022/04/21 13:46

Air Filter For Allergies https://www.pawelson.com/air-filter-for-allergies/ ブランドコピークラッチバッグ http://yuyth.ffsagami.com/ 36 Holes Alloy Bicycle Hub https://www.redvancycle.com/36-holes-alloy-bicycle-hub.html

, 2022/04/21 23:38

Electronic Micro Screws https://www.non-standard-fasteners.com/electronic-micro-screws.html 2021 wholesale price Variable Speed Peristaltic Pump - BQ80S Microflow Variable-Speed Peristaltic Pump - Lead Fluid https://www.leadfluidpump.com/2021-wholesale-price-variable-speed-peristaltic-pump-bq80s-microflow-variable-speed-peristaltic-pump-lead-fluid-2-product/ ブランドコピー安心サイト http://czvc94.ffsagami.com/

, 2022/04/22 03:55

0.4kw High Performance Servo Drive https://www.lylsolar.com/0-4kw-high-performance-servo-drive.html おすすめサイトスーパーコピーブランド販売と買取 http://b33.chip.jp/ghkghik/ Flat Drawstring https://www.wshclothingtrims.com/flat-drawstring/

, 2022/04/22 15:10

ロレックス時計コピー韓国スーパーコピー韓国時計免税店 http://b26.chip.jp/uhiko2/ 4 Way Fitting https://www.vacuumcomponents-st.com/4-way-fitting/ Camping Bed https://www.outdoorjd.com/camping-bed

, 2022/04/22 19:28

304 Stainless Steel Shower Door Handle https://www.hzdiecasting.com/304-stainless-steel-shower-door-handle.html ブランドコピー時計ルイヴィトンブランドコピー https://uyturt.ko-co.jp/ horn pendant https://www.gemnice.com/tag/horn-pendant/

, 2022/04/22 23:04

Hair Straight Brush https://www.tinx-haircurler.com/hair-straight-brush/ 時計スーパーコピー評価 https://hfdgf66.exblog.jp/ Panel Heater https://www.lesungnb.com/panel-heater

, 2022/04/23 05:52

, 2022/04/23 09:33

Shrink Label Film https://www.minflypackaging.com/shrink-label-film/ Natural Diamond Pendant Pear Cut Semi Mount https://www.fayjewelry.com/natural-diamond-pendant-pear-cut-semi-mount.html スーパーコピー時計ブランド時計コピー腕時計コピー http://dfweqwer.ffsagami.com/

, 2022/04/23 23:06

, 2022/04/24 01:42

Bulk Blank Award Medals https://www.kingtaicrafts.com/bulk-blank-award-medals/ Red Wine Bottle Adhesive Label https://www.jyd-cnprint.com/red-wine-bottle-adhesive-label.html ブランドスーパーコピー通販ブランドコピー販売 http://b38.chip.jp/hkfhjk/

, 2022/04/24 05:07

, 2022/04/24 07:38

Automatic Brush Cleaning Dust Sweeper https://www.fortranmachinery.com/automatic-brush-cleaning-dust-sweeper.html スーパーコピー時計ダイヤル https://ao2164.myjournal.jp/ Cat Treat Ball https://www.forrui.com/cat-treat-ball/

, 2022/04/24 11:54

Crystal Pearl Choker Necklace https://www.gemnice.com/tag/crystal-pearl-choker-necklace/ スーパーコピーブランド専門店日本最高級高品質 https://jfgh4fds.naganoblog.jp/ RFID Jewelry Tags https://www.lexsmartcard.com/rfid-jewelry-tags

, 2022/04/24 17:17

Bamboo Cotton Material https://www.sxkahn.com/bamboo-cotton-material/ SSB500132 https://www.ruvjs.com/ssb500132-.html ブランドコピー激安サイト https://jyngfhb.naganoblog.jp/

, 2022/04/24 21:09

スーパーコピー時計ブランドコピーの専門店清水宝飾 https://gd5tg4rs.shiga-saku.net/ Electronic Signal Parts Die Casting Parts https://www.ruochidiecasting.com/electronic-signal-parts-die-casting-parts.html Wifi Sweeper Robot https://www.yourlite-smart.com/wifi-sweeper-robot/

, 2022/04/25 01:35

, 2022/04/25 07:01

Anti Drip Greenhouse Film https://www.ndgreenhouse.com/anti-drip-greenhouse-film/ CF Series Rod End Bearing https://www.xinymachine.com/cf-series-rod-end-bearing.html ロレックススーパーコピーブランドコピー専門店 https://wo8x5.blogto.jp/

, 2022/04/25 15:19

Track Roller Bolts https://www.diggerpart.com/track-roller-bolts.html Medals For Military https://www.kingtaicrafts.com/medals-for-military/ スーパーブランドコピー口コミ https://khgt6r4.shiga-saku.net/

, 2022/04/25 19:35

サングラスブランドコピー https://sdgja.ko-co.jp/ JRF-H35-01TA Gas Cylinder Pressure Relief Valve https://www.china-vet.com/jrf-h35-01ta-gas-cylinder-pressure-relief-valve.html Ev Charging Cable Type 2 To Type 2 https://www.wissenergy.com/ev-charging-cable-type-2-to-type-2/

, 2022/04/25 23:01

Picnic Blanket https://www.ideamage.net/picnic-blanket ブランドコピー送料無料 https://jgfgr.hyakunin-isshu.net/ Wholesale Eco Friendly Yarn https://www.bcrtex.com/wholesale-eco-friendly-yarn/

, 2022/04/26 05:29

Bell Labs Fiber Optics https://www.fcjcable.com/bell-labs-fiber-optics/ Green Rusty Onyx Slabs https://www.xmstonelink.com/green-rusty-onyx-slabs.html スーパーコピー時計 https://tryhr5.exblog.jp/

, 2022/04/26 13:18

Anti Foaming Agent In Food https://www.soxydefoamer.com/anti-foaming-agent-in-food/ Six Folds Cardboard Game Board https://www.gamedoer.com/six-folds-cardboard-game-board.html 深センブランドコピー http://izvirna-vipavska.si/sl/trg-vipava

, 2022/04/26 21:34

ブルガリスーパーコピー時計 http://b35.chip.jp/jiko093/ Cutting Edge https://www.diggerpart.com/cutting-edge Fstn https://www.linflor-tech.com/fstn/

, 2022/04/27 03:01

Stock Clothing https://www.newrainbowg.com/stock-clothing ブランドコピー激安中国 http://reyertewrt.ffsagami.com/ Domestic Sliding Gates https://www.gateory.com/domestic-sliding-gates/

, 2022/04/27 05:13

Chlorpyrifos https://www.seabarchemical.com/chlorpyrifos/ シャネルコピーシャネルスーパーコピー http://b30.chip.jp/masashi5/ Concealer Pencil https://www.beshecosmetics.com/concealer-pencil.html

, 2022/04/27 07:33

Zinc Alloy Furniture Knob And Handle https://www.zongyihardware.com/zinc-alloy-furniture-knob-and-handle Industrial Safety Welding Glasses https://www.tynoweld.com/industrial-safety-welding-glasses/ スーパーコピー時計電池交換 https://w9thj.cafeblog.jp/

, 2022/04/27 11:59

ブランドコピー寝具代引き http://dfgertfg.ffsagami.com/ Large Fixed TV Wall Mount for TV Size 37“-70” https://www.izlers.com/large-fixed-tv-wall-mount-for-tv-size-37-70-.html Display Freezer https://www.sanaofreezer.com/display-freezer/

, 2022/04/28 01:59

8??7+1??19W Window Regulator Steel Cord https://www.rongwire.com/8-7-1-19w-window-regulator-steel-cord.html Carbon Fiber Nylon 3d Printer https://www.nylonhscc.com/carbon-fiber-nylon-3d-printer/ ブランドコピー激安代引き http://retfgdf.ffsagami.com/

, 2022/04/28 07:24

グッチ長財布コピー韓国ブランドスーパーコピー激安の偽物 http://ryhrtfg5465.jugem.jp/ High Pressure Nitrogen Generator https://www.hzkjgas.com/high-pressure-nitrogen-generator/ Die Casting Parts https://www.ruochidiecasting.com/die-casting-parts

, 2022/04/28 11:24

ボッテガヴェネタ靴コピー偽物ブランド最高級激安專門店 https://hgfdgd4.fukuwarai.net/ Motor Housing Accessories Die Casting Parts https://www.ruochidiecasting.com/motor-housing-accessories-die-casting-parts 1 2 X 12 Sanding Belt https://www.fukeabrasive.com/1-2-x-12-sanding-belt/

, 2022/04/28 15:50

Air-Tight Element Cylinder Cover Die Casting Parts https://www.ruochidiecasting.com/air-tight-element-cylinder-cover-die-casting-parts.html blood glucose meter with alarm https://www.sejoy.com/blood-glucose-meter-with-alarm/ スーパーコピー時計偽物ブランドスーパーコピーブランド https://gfh5r.ko-co.jp/

, 2022/04/28 21:05

Auto Generator Housing Die Casting Parts https://www.ruochidiecasting.com/auto-generator-housing-die-casting-parts.html スーパーコピー腕時計は腕時計職人の工芸の傑作です https://yturd46.ko-co.jp/ Ultrasonic Level Meter https://www.shwy4488.com/ultrasonic-level-meter/

, 2022/04/29 01:35

Zinc Alloy Machining Parts https://www.ruochidiecasting.com/zinc-alloy-machining-parts.html Máquina curvadora en frío de barandillas Nchrp 350 https://www.machinecanworld.es/maquina-curvadora-en-frio-de-barandillas-nchrp-350/ ブランドコピー時計修理 http://bnbxcvb.ffsagami.com/

, 2022/04/29 07:03

, 2022/04/29 15:22

, 2022/04/30 01:49
, 2022/04/30 23:24
, 2022/05/01 07:18

Cabeca De Impress?o Xulli 1880 Eco Solvente https://www.ailyuvprinter.com/cabeca-de-impressao-xulli-1880-eco-solvente/ Functional Powder Coating https://www.wanxin-hong.com/functional-powder-coating https://hgy5rg.ko-co.jp/ https://htrf5t5.ko-co.jp/

, 2022/05/01 13:01

https://wzxv4.xxxblog.jp/ https://ds4gdhj.exblog.jp/ Tubes en verre pour le soufflage du verre https://www.glasstubelune.fr/tubes-en-verre-pour-le-soufflage-du-verre/ Rotary Axis CNC Router Machine https://www.sunnaintl.com/rotary-axis-cnc-router-machine.html

, 2022/05/01 19:05

Stainless Steel Lever And Deadbolt Combo Door Lock https://www.zongyihardware.com/stainless-steel-lever-and-deadbolt-combo-door-lock.html https://ai6l51.livedoor.biz/ https://gfgre3e.naganoblog.jp/ Cooling Wet Curtain For Poultry https://www.ntynfan.com/cooling-wet-curtain-for-poultry/

, 2022/05/01 21:57

2Inch Ratchet Buckle With Long Single Hook https://www.forcerigging.com/2inch-ratchet-buckle-with-long-single-hook.html Inflatable Baby Play Mat https://www.matanimation.com/inflatable-baby-play-mat/ https://kjh52.anime-life.com/ http://ew43r.jugem.jp/

, 2022/05/02 01:39

Nail Extension Gel Polish https://www.colexbeauty.com/nail-extension-gel-polish https://x5wk3.mynikki.jp/ https://fhmedhg.ko-co.jp/ Electronic Torsional Fatigue Testing Machine https://www.epd-instrument.com/electronic-torsional-fatigue-testing-machine/

, 2022/05/03 01:20
, 2022/05/04 13:11

Friction Kelly Bar https://www.aibatedrillproducts.com/friction-kelly-bar/ http://dfgert.ffsagami.com/ http://uiyuo.ffsagami.com/ 33mm Dia Pen Type DC Motor Tubular Linear Actuator https://www.tools-source.com/33mm-dia-pen-type-dc-motor-tubular-linear-actuator.html

, 2022/05/04 17:58

Land Rover ABS Sensor https://www.ruvjs.com/land-rover-abs-sensor https://hfd452uy.anime-festa.com/ http://pkjkd2.ffsagami.com/ Ferro fundido dúctil flangeado https://www.iron-bindi.pt/ferro-fundido-ductil-flangeado/

, 2022/05/04 21:56
, 2022/05/05 07:35

http://rjuykr5.jugem.jp/ https://agjgdo.corpblog.jp/ Belay Carabiner https://www.gloryspp.com/belay-carabiner/ Digital Microscope Accessories https://www.ksitong-cmm.com/digital-microscope-accessories

, 2022/05/06 03:41

Boc-(R)-3-AMino-4-(2,4,5-Trifluorophenyl)Butanoic Acid http://www.sandoopharma.com/boc-r-3-amino-4-2-4-5-trifluorophenyl-butanoic-acid.html Panasonic Original Tv Remote https://www.controlantai.com/panasonic-original-tv-remote/ https://rtgrd.ko-co.jp/ https://dfg84fdg.ko-co.jp/

, 2022/05/06 07:14

クアラルンプールブランドコピー http://www.chaatparadise.com/ 1000W 12V 220V Inverter With Battery Charger https://www.cnhisolar.com/1000w-12v-220v-inverter-with-battery-charger.html Rain Ponchos Reusable https://www.raincamega.com/rain-ponchos-reusable/

, 2022/05/06 17:28

ブランドコピー人気新作ブランドコピー韓国 https://www.laventanacomunicacion.es/clientes/da-pino/ men jeans https://www.yulindongke.com/men-jeans-2/ LR052786 https://www.ruvjs.com/lr052786.html

, 2022/05/07 11:39
, 2022/05/07 17:42

https://jfgfd.anime-festa.com/ https://gfrjj.ko-co.jp/ Black Tea Organic Loose Leaf Black Tea QW7 https://www.kteagroup.com/chinese-bulk-black-tea-organic-loose-leaf-black-tea-qw7.html High Speed Cartoning Machine For Toothpaste https://www.odfsolution.com/high-speed-cartoning-machine-for-toothpaste/

, 2022/05/09 05:25

13.56MHZ UID 0 Block Changeable RFID PVC Cards https://www.lexsmartcard.com/13-56mhz-uid-0-block-changeable-rfid-pvc-cards.html http://bnbxcvb.ffsagami.com/ https://htgfr54.ko-co.jp/ Loose Plate Flange With Weld-On Plate Collar https://www.aflangemanufacturing.com/loose-plate-flange-with-weld-on-plate-collar/

, 2022/05/09 13:13
, 2022/05/10 07:43

Draagbare brandbestrijdingspomp https://www.allfirepump.nl/draagbare-brandbestrijdingspomp/ https://xdbz2.myjournal.jp/ http://eryhrtu.ffsagami.com/ 2022 New Design Universal Metal Monitor Stand https://www.izlers.com/2022-new-design-universal-metal-monitor-stand.html

, 2022/05/10 13:10
, 2022/05/11 23:15

Wholesale Ldpe Water Bottle https://www.goxbottles.com/wholesale-ldpe-water-bottle/ Walker 2 (Sprinkler) https://www.ruvjs.com/walker-2-sprinkler- http://wrwe4rw.jugem.jp/ https://ygj65u87.naganoblog.jp/

, 2022/05/12 21:33
, 2022/05/15 01:38
, 2022/05/15 09:18

Small Nylon Gears https://www.sdnylonrod.com/small-nylon-gears/ Ivory Core Standard Cardstock Playing Cards for Board https://www.gamedoer.com/ivory-core-standard-cardstock-playing-cards-for-board.html http://hngfhfge.jugem.jp/ http://vfverwe.ffsagami.com/

, 2022/05/15 15:17
, 2022/05/15 21:02
, 2022/05/16 13:55

Face Recognizer Holder and Aluminium Or Stainless Steel https://www.yujingmetals.com/face-recognizer-holder-and-aluminium-or-stainless-steel.html http://dftewt.ffsagami.com/ http://hgf5rr.jugem.jp/ Shampoo Containing Zinc Pyrithione https://www.sprchemical.com/shampoo-containing-zinc-pyrithione/

, 2022/05/16 23:04
, 2022/05/17 01:21
, 2022/05/17 03:39

Work Light With Tripod https://www.gdworklight.com/work-light-with-tripod.html https://yth5tef.exblog.jp/ http://b27.chip.jp/fghedsr/ Fiberglass Reinforced Plastic Tanks https://www.sdnates.com/fiberglass-reinforced-plastic-tanks/

, 2022/05/17 05:57
, 2022/05/19 01:22
, 2022/05/19 05:56

https://gjf6tyt5.ko-co.jp/ https://xdbz2.myjournal.jp/ Screenless Projector https://www.luckystarlink.com/screenless-projector.html China Sheet Metal Shearing Supplier https://www.machinecandor.com/china-sheet-metal-shearing-supplier/

, 2022/05/19 09:48

http://gdgdfjj6.jugem.jp/ https://kjh52.anime-life.com/ Double Injection 600 Puffs Disposable Vape https://www.oemofvape.com/double-injection-600-puffs-disposable-vape.html Neomycin Sulfate Powder Chicken https://www.cherryamedicine.com/neomycin-sulfate-powder-chicken/

, 2022/05/20 07:31

LED Surface Mounted Aluminum Profiles https://www.jeledprofile.com/led-surface-mounted-aluminum-profiles https://am7sjr.publog.jp/ https://akzio1.xxxblog.jp/ Tungsten Carbide Milling Bits https://www.carbidehaoze.com/tungsten-carbide-milling-bits/

, 2022/05/20 17:43

, 2022/05/20 21:39

Plastic Bauble Storage Box https://www.hilarioussusu.com/plastic-bauble-storage-box/ http://hjkfy.jugem.jp/ https://uyittyurt.misujitate.com/ Airbrush Kit with Pressure Regulator Airbrush Gun Cordless https://www.ibeautee-airbrush.com/airbrush-kit-with-pressure-regulator-airbrush-gun-cordless.html

, 2022/05/21 01:01
, 2022/05/22 07:09

GB Standard Flanged Ball Valve https://www.zjminruivalve.com/gb-standard-flanged-ball-valve.html http://rkiyi6.jugem.jp/ http://ghrduyu.ffsagami.com/ Frozen French Fries Production Line https://www.guantuomachine.com/frozen-french-fries-production-line/

Enter your comment. Wiki syntax is allowed: