User Tools

Site Tools


Anatomy of time series data, sampling theory


  • Understand the fundamentals of sampling theory: Nyquist frequency, aliasing
  • Learn why and how to use anti-aliasing filters
  • Reconstruct a signal from sampled data
  • Examine the file structure of Neuralynx continuously sampled data in detail


  • (intuitive background) nice, quick intro to aliasing by Bruno Olshausen, with some connections to the human visual system
  • (more technical background, optional) read Chapter 3 of the Leis book. Skip sections 3.4.3, 3.4.4, 3.4.5, 3.4.6, 3.4.7, 3.7. Skim section 3.6.

Introductory remarks

Systems for the acquisition of neural data give us a necessarily imperfect view of the brain. Some of these limitations are obvious, such as a finite number of recording sites and contamination of the data with movement artifacts and system noise. Other limitations are perhaps more subtle, and include the pitfalls associated with limited (temporal) sampling of the underlying process and the properties of specific recording systems.

An important phrase to remember in any data analysis workflow is "garbage in, garbage out." Making sure that your input is not garbage starts with a thorough understanding of the recorded signal and how it is stored. (Of course, if you abuse it enough, even the best data can rapidly turn to garbage. But that is beyond the scope of this module, which deals with the raw data.)

Motivating example: aliasing

Before you begin, do a git pull from the course repository. Also, to reproduce the figures shown here, change the default font size (set(0,'DefaultAxesFontSize',18) – a good place to put this is in your path shortcut).

Let's start with an example that illustrates what can go wrong if you are not aware of some basic sampling theory ideas. To do so, we will first construct a 10Hz signal, sampled at 1000Hz. Recalling that the frequency f of a sine wave is given by $y = sin(2 \pi f t)$:

Fs1 = 1000; % Fs is the conventional variable name for sampling freq
F1 = 10; twin = [0 1]; % use a 1-second time window (from 0 to 1s)
tvec1 = twin(1):1/Fs1:twin(2); % timebase for signal
signal1 = sin(2*pi*F1*tvec1);

Notice the general approach in defining time series data: we first construct a timebase (conventionally named tvec, or t) and then the signal.

☛ Plot the signal1 variable and verify that the result matches your expectation: for instance, it should have a specific number of peaks.

Let's say we are going to sample this signal at 12Hz:

Fs2 = 12;
tvec2 = twin(1):1/Fs2:twin(2);
signal2 = interp1(tvec1,signal1,tvec2,'nearest');

Note the use of the interp1() function. This is a very important and frequently used command with some interesting options we'll explore later. For now, we are telling it something like, “we have an input signal, specified by tvec1 and signal1; return those values of signal1 for those values of tvec1 closest to those in tvec2. An intuition for that is illustrated in the figure below – basically you want to get a value for some time (the red dot) that isn't explicitly present in your signal (the blue stems):

Now that we know how the signal2 variable – the signal we are seeing by sampling at 12 Hz – is obtained, we can plot it:

hold on;
xlabel('time (s)'); ylabel('y');

You should see:

The individual data points we obtain with our 12Hz sampling are shown in green. Notice that it describes a periodic signal (red dashed line) with a frequency nothing like the 10Hz in the original signal (blue sine wave)! We might be tempted to conclude that we are seeing a 2Hz signal, when in fact there is no such thing in the original data. This effect is known as aliasing (i.e. the existence of multiple underlying signals which could produce a given set of samples), and it can happen when certain conditions are met, which we will explore next.

The Nyquist limit

The Nyquist sampling theorem states that the minimum sampling frequency required to avoid aliasing is twice the frequency of the signal, i.e.

$$ F_s \geq 2*F_{orig} $$

This Nyquist criterion is intuitive, when you plot the signal that can be obtained by sampling our original signal at 20Hz, i.e. twice the frequency:

Note that we obtain a signal which is periodic (repeating) at 10Hz, as we know to be correct.

An important consequence of the Nyquist criterion is that

$$ F_{orig} \leq F_s / 2 $$

In other words, the highest-frequency signal that can be recovered when sampling is half the sampling frequency. This frequency is sometimes referred to as the Nyquist frequency or Nyquist limit (the precise terminology gets a bit confused, but in neuroscience they are interpreted as referring to the same thing). So, for instance, digital audio on CDs and most digital file formats is typically represented with Fs = 44100 Hz, which means that the highest frequency that theoretically can be reproduced is 22050 Hz, corresponding approximately to the upper limit of human hearing.

However, it is best not to cut things too fine: say you are interested in detecting a “gamma” frequency of 75Hz with your EEG recording system. If you acquire data at Fs = 150 Hz, you might run into problems.

☛ To see this, change Fs2 in the code above to 20, and plot the result. What do you see?

Thus, a (very safe) rule of thumb is to acquire data at a sampling frequency four times the minimum signal frequency you are interested in detecting.

Subsampling (decimating) time series data

In the real world, the frequency at which we can acquire data will be limited by the properties of your experimental equipment. For instance, the maximum sampling rate on a typical Neuralynx system is 32 kHz. Thus, the highest-frequency signal we can detect is 16 kHz (the Nyquist frequency). Crucially, however, we cannot rule out the possibility that frequencies above 16 kHz are present in the signal we are sampling from! Thus, we risk aliasing: generating “phantom” frequencies in our sampled data that don't exist in the true signal. What to do?

The general solution is to apply an anti-aliasing filter to the data before sampling. To illustrate this, let's generate a signal consisting of two frequencies:

Fs1 = 1200;
F1 = 3; F2 = 10;
twin = [0 1];
tvec1 = twin(1):1/Fs1:twin(2);
signal1a = sin(2*pi*F1*tvec1); signal1b = 0.5*sin(2*pi*F2*tvec1);
signal1 = signal1a + signal1b;

Now, if we sample this signal at 12 Hz, by taking every 100th sample (note Fs is set to 1200), we will get aliasing due to the fact that our sampling frequency is less than twice that of the highest frequency in the signal (10 Hz):

dt = 100;
tvec2 = tvec1(1:dt:end);
signal2 = signal1(1:dt:end); % sample at 12 Hz - every 100th sample
hold on;
title('without anti-aliasing filter');

As you can see in the resulting plot, the sampled data (green dots) isn't a clean 3Hz sine wave as we would hope to get – it is contaminated by an alias of the 10Hz component in the underlying signal. Thus, our naive sampling method of taking every 100th sample is dangerous! Here is how to do it properly:

% sample at 12 Hz with different method
tvec1d = decimate(tvec1, dt);
signal2d = decimate(signal1,dt);
hold on;
xlabel('time (s)'); ylabel('y');
title('with anti-aliasing filter');

You should get:

Note that after using decimate() instead of directly taking each 100th sample, we recover a relatively clean 3Hz sine (except for some edge effects; more on that in later modules). You can see the difference between the two sampling methods are substantial!

The way decimate() works is that it first applies a filter to the data, removing any frequencies that could cause aliases (i.e. anything with a frequency of at least half the new sampling frequency). We will explore filters in more detail in Module 6.

Data acquisition systems use the same principle. If you look in the settings of your system, you should be able to find the details of the filter applied to the data by default. It should have an upper cut-off frequency set to prevent aliasing. For instance, for some Neuralynx systems, all data above 9000 Hz is filtered out.

☛ Suppose you acquired some nice neural data at 2 kHz, and now you decide to analyze frequencies in the 50-100 Hz range. To speed up your analysis and save space, you want to downsample your data to 500 Hz: a good choice, more than adequately above the Nyquist frequency. What MATLAB command would you use to downsample this data, and why? (Hint: what is wrong with the downsample() function you may be tempted to use?)

Reconstructing a signal from sampled data (optional)

You may have noticed that the sampled signals above often look a bit choppy, losing the smoothness of the originals. As discussed in the Leis book, we can try to recover the original using interpolation. Let's illustrate this by first constructing a 100 Hz signal, sampled at 2 kHz:

fs1 = 2000;
tvec = 0:1/fs1:4; % construct time axis, sampled at 2kHz
freq1 = 100;
y = sin(2*pi*freq1*tvec); % 100Hz signal
ax1 = subplot(211);
stem(tvec,y); title('original');

Say we wish to subsample down to 500Hz to save space. Naively, we might simply take every 4th sample (in fact, this is what the MATLAB function downsample() does):

subsample_factor = 4;
tvec2 = tvec(1:subsample_factor:end); % take every 4th sample
y2 = y(1:subsample_factor:end);
ax2 = subplot(212);
stem(tvec2,y2,'r'); title('subsampled');
xlabel('time (s)');

☛ Why is it okay to subsample this way in this case?

It's hard to see what is going on when we are so zoomed out. Let's use the axes handles introduced last week to rectify this:

xl = [1 1.04];
linkaxes([ax1, ax2], 'x');
set(ax1,'XLim',xl); % see what I did there?)

That's better. Notice that in the subsampled plot, you can detect the presence of the 100Hz signal by noticing that each sample repeats (has the same value) every 10ms. However, it doesn't look much like the original – as discussed in the Leis book, we can attempt to reconstruct it:

hold on;
y_interp = interp1(tvec2,y2,tvec,'linear');
p1 = plot(tvec,y_interp,'b');
y_interp2 = interp1(tvec2,y2,tvec,'spline');
p2 = plot(tvec,y_interp2,'g');
legend([p1 p2],{'linear','spline'},'Location','Northeast'); legend boxoff

You should obtain something like:

Notice how the spline-interpolated sampled signal is a pretty good approximation to the original. In cases where you care about detecting the values and/or locations of signal peaks, such as during spike sorting, performing spline interpolation can often improve accuracy substantially!

Detailed examination of Neuralynx time series data

(Note: you can safely skip this section.)

This section will look in some detail at how raw time series data is stored by the Neuralynx system. Even if you do not use this system in your own work, the lessons that can be learned from looking at what can go wrong at the raw data level already are universal!

To get into the guts of actual Neuralynx data, we will not use the sanitized wrapper provided by LoadCSC() but instead use the loading function provided by Neuralynx. Using cell mode in a sandbox file as usual, cd into the R016-2012-10-08 data folder you downloaded previously in Week 1. Then deploy the Neuralynx loader:

% cd to your location here
fname = 'R016-2012-10-08-CSC03b.ncs';
[Timestamps, ~, SampleFrequencies, NumberOfValidSamples, Samples, Header] = Nlx2MatCSC(fname, [1 1 1 1 1], 1, 1, []);

Note the use of the ~ output argument, which indicates that we do not wish to assign the second output of the Nlx2MatCSC function to a variable.

Most data files come with a “header” that describes some properties of the data. Let's look at the header of our file, which is a LFP recorded from the ventral striatum (nucleus accumbens core) of a rat running back and forth along a linear track:

>> Header
Header = 
    '######## Neuralynx Data File Header'
    '## File Name C:\CheetahData\2012-10-08_11-24-30\CSC10.ncs'
    '## Time Opened (m/d/y): 10/8/2012  ( 11:25:2.79'
    '## Time Closed (m/d/y): 10/8/2012  ( 12:32:9.61'
    '-CheetahRev 5.5.1 '
    '-AcqEntName CSC10'
    '-FileType CSC'
    '-RecordSize 1044'
    '-HardwareSubSystemName AcqSystem1'
    '-HardwareSubSystemType DigitalLynxSX'
    '-SamplingFrequency 2000'
    '-ADMaxValue 32767'
    '-ADBitVolts 4.57778e-008 '
    '-NumADChannels 1'
    '-ADChannel 4 '
    '-InputRange 1500 '
    '-InputInverted True'
    '-DSPLowCutFilterEnabled True'
    '-DspLowCutFrequency 1'
    '-DspLowCutNumTaps 0'
    '-DspLowCutFilterType DCO'
    '-DSPHighCutFilterEnabled True'
    '-DspHighCutFrequency 425'
    '-DspHighCutNumTaps 128'
    '-DspHighCutFilterType FIR'
    '-DspDelayCompensation Disabled'
    '-DspFilterDelay_µs 1984'

You should recognize at least a few of the phrases used: for instance, we see that the sampling frequency (often abbreviated as Fs) is given as 2000 (samples per second, or Hz). Important also is the InputRange, given as 1500 (microvolts, uV), to indicate that the maximum value (ADMaxValue, or 32767) in the raw data corresponds to an actual signal magnitude of 1500uV. Ignore the other fields for now.

☛ The waveforms of extracellularly recorded action potentials (“spikes”) typically contain frequency components in the 1000-5000Hz range. Do you expect to find spikes in this data file? Why not?

The ADMaxValue of 32767 reflects the fact that Neuralynx stores data as 16-bit integers (see the discussion in the Leis chapter if this doesn't mean anything to you). Thus, the smallest value it can store is -32768, for a total range of 65536 (16 bits). This means that what is actually a continuous variable – voltage – is stored with finite precision.

☛ Given Neuralynx's 16-bit data format and the specified range of +/- 1500uV for this data session, compute the smallest voltage change (in uV) that can be resolved.

☛ Using this knowledge, convert the Samples variable, which is specified in AD values, to millivolts. (Note that the MATLAB data type is given as double but the values are actually int16.) Notice that the ADBitVolts field in the header can be used for this unit conversion.

Inspect the Timestamps variable, which is given in microseconds (us).

☛ Convert Timestamps to seconds (s).

You may have noticed that the Samples variable is size [512 x 10761] and Timestamps is [1 x 10761]. As it turns out, Neuralynx data (of the “continuously sampled” type) is stored in blocks of 512 samples. Only the first sample of each block is timestamped.

☛ Compute the total number of samples, and from this number and the sampling frequency, the total time that would be sampled continuously if all samples were acquired without any gaps. Compare this number with the actual time elapsed between the first and last Timestamps. What do you conclude?

In fact, there are several gaps in the data. Our standard recording protocol requires a “pre-recording” session, followed by a pause, then the actual recording session, another pause, and a “post-recording” session. This can be seen easily by plotting the difference between each sample and its predecessor (plot(diff(Timestamps))).

We wish to restrict the data to only those samples taken when the rat was running on the track. Promoted (i.e. preprocessed and annotated) data folders always have an “ExpKeys” file with some useful metadata, including TimeOnTrack and TimeOffTrack values:

>> LoadExpKeys
>> ExpKeys
ExpKeys = 
     BehaviorOrder: {'Value'  'Risk'}
          Protocol: 'Hyperdrive'
            Target: {'Striatum'  'Hippocampus'}
           Target2: {'Ventral'  'CA1'}
    TetrodeTargets: [2 2 1 1 1 1]
     TetrodeDepths: [2000 1960 6300 6380 6460 1920]
       TimeOnTrack: [1030 2285]
      TimeOffTrack: [2268 3194]
             Delay: [0.5000 0.5000]
         goodGamma: {'R016-2012-10-03-CSC04d.ncs'  [1x26 char]}
           goodSWR: {'R016-2012-10-03-CSC02b.ncs'}
         goodTheta: {'R016-2012-10-03-CSC02b.ncs'}
        CueToneMap: {'S3'  'S2'  'S4'  'S1'  'S2'  'S5'}

In fact this data contains two recording sessions, called 'Value' and 'Risk' respectively (this refers to the distributions of food outcomes predicted by audio cues presented as the rat crossed the center of the track; we will not use this information for now, but the full task is described in the paper). These sessions map onto the first and second elements of TimeOnTrack and TimeOffTrack, which give the times (in seconds) of when the Value and Risk sessions started and ended, respectively.

☛ Use the first element of ExpKeys.TimeOnTrack and ExpKeys.TimeOffTrack to find the indices of Timestamps corresponding to the Value session. Then, use these to create a new set of variables TimestampsValue, SamplesValue et cetera. (Note that this is essentially what restrict() does; If you are confused by this, review the documentation on Matrix Indexing.)

☛ Plot the differences between the resulting timestamps (Hint: MATLAB's diff() function is useful here!). You should see:

The most common value between timestamps seems to be about 0.26 s. Recall that these timestamps are for the start of a block of 512 values.

☛ What is the expected difference between 512-sample timestamps if Fs is 2kHz?

Let's test if this indeed the most common value in these data:

>> 512.*(1/2000) == mode(diff(TimestampsValue))
ans =

Hmm. (You can ask MATLAB why, but don't expect an informative answer!)

☛ Use format long to change MATLAB's default display, and inspect the above values to determine the source of the difference.

Apparently the typical elapsed time between two 512-sample blocks does not correspond exactly to what would be expected if Fs equals 2kHz.

☛ Compute Neuralynx's true sampling rate from the observed mode of the timestamp diffs.

Close enough for practical purposes, but the differences could become significant for very long recording sessions!

Next: what is up with these clearly smaller values in the diff plot? Let's investigate:

hold on;
plot(NumberOfValidSamplesValue == 512,'r')

If you zoom in, you should find that the odd timestamp diffs occur for those sample blocks that have a number of valid samples that is not 512.

☛ Find the indices of these crippled blocks. Look at the Samples inside a few of these to see what Neuralynx does with invalid samples.

Tricky! How would we know to exclude these invalid samples? Fortunately, we can do so using the NumberOfValidSamples variable, which tells us how many are good and can be included.

☛ How does the LoadCSC() function handle these cases?

:!: NOTE: the above missing sample weirdness was a rare occurrence for our lab's Neuralynx system; one that was traced to a faulty framegrabber board driver which caused the computer to lock up periodically. Thanks to Neuralynx's warning and error reporting system in the acquisition software, we were immediately alerted that something unexpected was happening. In addition, the *events.Nev file contains event strings indicating suspect data blocks.


louis vuitton hockenheim loafer in crocodile, 2021/04/28 11:36

N級品バレンシアガ帽子コピー Felt Laptop Case cheap lv belts real

Rf Slimming Machine, 2021/04/28 15:15

リシャールミル時計コピー代引き new gucci bags 2013 Rf Slimming Machine

Fake Laminate Flooring, 2021/04/28 17:56

cost of louis vuitton ブランドサングラスコピーN級品 Fake Laminate Flooring

高品質エルメスピアスコピー, 2021/04/28 19:44

louis vuitton briefcase m53331 31090 Used For Japanese Cars - Auto Oil Filter スーパーコピーブランド優良店

オーデマピゲ時計偽物, 2021/04/29 03:21

Cosmetic Plastic Bottle cheap air jordan iv gs retro pink foil white cement grey electric purple ドルチェ&ガッバーナ靴スーパーコピー

Boar Semen Extender, 2021/04/29 09:35

louis vuitton outlet store online authentic エルメス靴コピー販売店 Boar Semen Extender

Idler Roller Manufacturer, 2021/04/29 11:25

louis vuitton wallet organizer ディオール帽子スーパーコピー販売店 Idler Roller Manufacturer

IWC時計コピー, 2021/04/29 17:05

Ct Single Head Injector louis vuitton journeys buzz aldrin ブランドコピーsupreme

シャネル靴コピー通販店, 2021/04/29 17:59

cheap real jordan sneacker 3mm Healthtec Cheap Eva Disposable Slipper Supplier グッチ時計コピー通販店

ブルガリ指輪コピー店舗, 2021/04/29 19:48

1.5 Ton Digger For Sale louis vuitton beaubourg tote エルメスネックレススーパーコピー代引き

jordan sneaker websites, 2021/04/29 23:57

Foamboard 2mm コンスタンタン時計コピー激安 cheap jordan 23 varsity red

Sludge Water Pump, 2021/04/30 11:42

millionaire louis vuitton sunglasses クロムハーツ財布ブラントコピー代引き Sludge Water Pump

Coal Mine Pump, 2021/04/30 13:38

grade school jordans shoes N級品エルメス帽子コピー Coal Mine Pump

Bosch Fuel Metering Unit, 2021/04/30 15:36

totally bag louis vuitton シャネル指輪コピー Bosch Fuel Metering Unit

ブランドジバンシーサングラスコピー, 2021/04/30 19:28

where can i buy real jordans online for cheap China Sulphate 本物と同じグッチケースコピー

Aerosol Filling Sealing Machine, 2021/04/30 23:09

本物と同じディオール財布コピー lv sunglasses men style 2013 fashion style Aerosol Filling Sealing Machine

トッズ靴スーパーコピー通販店, 2021/04/30 23:59

Hubei Linkun Hongyuan Carpet Co., Ltd. cheap air jordan xix original og shoes クリスチャンルブタン靴コピー通販店

ブランドサンローランバッグコピー, 2021/05/01 01:49

louis vuitton bag shop Automatic Watering System Bunnings ブルガリピアス偽物

Manganin 130, 2021/05/01 03:45

louis vuitton 2008 winter ブランドゴヤールバッグコピー Manganin 130

110t H Type Double Crank Punch Machine, 2021/05/01 05:36

jordans shoes for sale ディオールピアスコピー販売店 110t H Type Double Crank Punch Machine

ボッテガヴェネタ財布偽物, 2021/05/01 11:01

cheap jordan 2004 mazda 3 hatchback Advertising Display Screen ブランドバッグスーパーコピー通販店

Hangzhou Pingcheng Machinery Co., Ltd., 2021/05/01 11:50

バーバリーバッグスーパーコピー authentic louis vuitton vest Hangzhou Pingcheng Machinery Co., Ltd.

ブランドコピーs級, 2021/05/01 13:40

Fuzhou Eco Tree Wood Commercial Co., Ltd. michael jordan shoes 23 スーパーコピーブランド激安

Carbon Fiber Unidirectional Cloth, 2021/05/01 15:30

フェラガモ財布コピー優良サイト cheap nike air jordan 8 white black TRUE red Carbon Fiber Unidirectional Cloth

高品質シャネルブレスレットコピー, 2021/05/01 17:22

Metric Hose Barb Fittings handy hüllen iphone 4s louis vuitton コーチ財布スーパーコピー

air jordans retro 3 white, 2021/05/01 19:12

スーパーコピーブランドモンクレール Jiangyin Tianfu Technology Co., Ltd. fast shipping air jordan 1 fluff leopard purple cheap

most expensive shoes jordans, 2021/05/01 21:01

1.2m Zinc Alloy Usb Cables 本物と同じクロムハーツブレスレットコピー cheap jordan retro 13 shoes

12 Core Figure 8 Fibre Optic Cable, 2021/05/02 03:02

バレンシアガ財布コピー cheap jordan replicas for sale 12 Core Figure 8 Fibre Optic Cable

Lathe Body, 2021/05/02 03:44

グッチバッグスーパーコピー代引き louis vuitton store palm desert Lathe Body

China Side Flail Mower and Lawn Mower price, 2021/05/02 07:02

ルイヴィトンピアスブラントコピー代引き air jordan 7 gmp China Side Flail Mower and Lawn Mower price

louis vuitton alma handbag blue, 2021/05/02 07:49

ルイヴィトンサングラススーパーコピー通販店 5kw Off Grid Solar Inverter lv outlet online shoes 2013

ブランドピアスコピー販売店, 2021/05/02 09:37

Reactive Power Compensating Fcl louis vuitton tote bag with change purse スーパーコピーブランドルイヴィトン

official louis vuitton belts, 2021/05/02 13:14

スーパーコピーブランド専門店口コミ Chiffon Fabric For Curtain louis vuitton neverfull styles

日本AV性爱电影, 2021/05/02 15:03

シャネルピアスコピー激安 louis vuitton travel bag 在线赌场

欧美牲交AⅤ, 2021/05/02 15:53

グッチブレスレットコピー代引き cheap air jordan 11 low gs infrared 23 retro black infrared 23 pure platinum 日本AV性爱电影

Transmission Oil, 2021/05/03 01:42

ブランドショパール時計コピー louis vuitton wallet white Transmission Oil

シャネルバッグコピー優良サイト, 2021/05/03 05:50

Ankle Socks imitation louis vuitton bags ブランドブレスレットスーパーコピー通販店

Midwest Pacific Impulse Heat Sealer, 2021/05/03 07:43

コーチ財布コピー販売店 louis vuitton lockit mm Midwest Pacific Impulse Heat Sealer

China Wholesale Ppr Welding Tools Manufacturers, 2021/05/03 09:32

air jordan retro 11 low for cheap ブランドグッチ帽子コピー China Wholesale Ppr Welding Tools Manufacturers

ブランドピアスコピー通販店, 2021/05/03 11:23

Pharmaceuticals louis vuitton original outlet ディオールベルトコピー国内発送

Quality Wireless Earbuds, 2021/05/03 13:09

ヴェルサーチコピーブランド lv body bag Quality Wireless Earbuds

ブランド財布コピー口コミ, 2021/05/03 13:58

cheap jordan 4 thunder Automatic Door Opener ブランド財布コピー口コミ

louis vuitton replica handbags wholesale cheap, 2021/05/03 15:58

Best Botox Boston ブランドピアススーパーコピー sale on louis vuitton

シャネル帽子コピー代引き, 2021/05/03 17:38

6061 Plate gucci watches for women on sale グッチストールコピー販売店

Curved Double Glazing, 2021/05/04 17:44

カルティエブレスレットスーパーコピー代引き louis vuitton sale authentic bags online Curved Double Glazing

Acrylic Glass Display Case, 2021/05/04 19:33

ブランドコピーどこで買う louis vuitton serial number Acrylic Glass Display Case

Heart Shaped Sunglasses, 2021/05/04 21:28

buy cheap new jordans スーパーコピー時計詐欺 Heart Shaped Sunglasses

Board Pp Hollow Corrugated Plastic Sheet, 2021/05/05 07:01

alma louis vuitton ルイヴィトンバッグコピー激安 Board Pp Hollow Corrugated Plastic Sheet

ブランドシャネルブレスレットコピー, 2021/05/05 09:40

air jordan 11 2012 release Ultrasonic Mosquito コピーブランドおすすめサイト

louis vuitton damier triana, 2021/05/05 11:29

Glass Lantern Candle Holder Supplier フェンディ靴スーパーコピー louis vuitton damier triana

フェンディサングラススーパーコピー代引き, 2021/05/05 13:15

air jordan 4 off white military blue neutral grey cheap Automated Pallet Transfer Car 本物と同じエルメスサングラスコピー

ピアジェ時計スーパーコピー代引き, 2021/05/05 15:02

air jordan shoe series Aisi 1015 Low Carbon Steel Balls フェラガモ靴コピー

ディオールストールコピー店舗, 2021/05/05 17:47

Marine Fender Processing Line cheap jordan hoodies セリーヌピアスコピー通販店

Cuban Link Ankle Bracelet, 2021/05/06 07:58

cheap air jordan 13 white black TRUE red pearl grey shoes ブランドストール/スカーフコピーサイト Cuban Link Ankle Bracelet

ミュウミュウ財布コピー国内発送, 2021/05/06 09:33

louis vuitton handbags for wholesale 8×4 Aluminium Sheet ディオールブレスレットコピー販売店

グッチ指輪コピー通販店, 2021/05/06 13:02

louis vuitton belt m6874s Crystal Golf Balls エルメスピアスコピー品

Battery Lithium Ion, 2021/05/06 13:51

leather gucci wallet 本物と同じフェンディサングラスコピー Battery Lithium Ion

Multi-holes paper punch, 2021/05/06 15:39

マイケルコース財布コピー代引き air jordan xi low retro Multi-holes paper punch

2 Stroke Stator, 2021/05/06 19:16

louis vuitton ipad case fake スーパーコピーブランド違法 2 Stroke Stator

ヴェルサーチコピーブランド, 2021/05/07 09:38

real cheap air jordans that does not accept visa or western union 16mm Pvc Fitting クロムハーツ指輪スーパーコピー代引き

Laminating Film Machine Factory, 2021/05/07 11:27

N級品フェンディ靴コピー jordan 8 concord aqua Laminating Film Machine Factory

cheap jordan shoes for boys on sale, 2021/05/07 17:41

N-Methylmorpholine 109-02-4 本物と同じバリー靴コピー air jordan high top

louis vuitton for sale 2012, 2021/05/08 07:11

Family Size Picnic Blanket ティファニー指輪コピー店舗 louis vuitton tivoli pm monogram canvas

ゴヤールバッグブラントコピー代引き, 2021/05/08 09:49

louis vuitton zippy wallet damier canvas 10ka Smart Mcb ディオールサングラスコピー品

ブルガリブレスレットコピー代引き, 2021/05/08 13:29

louis vuitton website in singapore Beer Opener Keychain セリーヌサングラスコピー品

louis vuitton pet carrier for sale, 2021/05/08 17:02

Cost To Install A Lift コーチ帽子コピー激安 replica louis vuitton keychain pouch

louis vuitton damier azur shoes, 2021/05/08 17:06

20 Inch Folding Electric Bike サンローラン靴コピー国内発送 louis vuitton shoes online

エルメス時計コピー, 2021/05/08 20:07

vintage louis vuitton made in france Adjustable Stand Up Desk 高品質フェラガモバッグコピー

louis vuitton womens briefcase, 2021/05/08 23:07

Auto Hardware Parts プラダ財布コピー激安 louis vuitton website bags

バーバリーストールコピー品, 2021/05/09 09:20

Eps Tv Packing Mould authentic cheap air jordans コーチバッグコピー

air jordan 5 metallic black metallic silver varsity red for cheap, 2021/05/09 11:10

iphonex手帳型ケースブランドコピー Bike Bolt cheap retro jordan shoes

where can i get air jordan retro 13, 2021/05/09 13:02

Industrial Rewinder for printing 本物と同じシャネル財布コピー where can i get air jordan retro 13

air jordan melo 1 5 for cheap, 2021/05/09 15:47

Industry Grade Foaming Agent 高品質プラダベルトコピー cheap jordan 13 yellow

Candy Glass Jars, 2021/05/10 09:20

cheap air jordan 5 bel air retro クロムハーツサングラススーパーコピー Candy Glass Jars

Canvas Mustache Rolled Pencil Bag, 2021/05/10 12:15

N級品フェンディ靴コピー louis vuitton price list singapore Canvas Mustache Rolled Pencil Bag

louis vuitton neverfull gm price, 2021/05/10 15:41

Breathable Sport Fabric ルイヴィトン財布コピー激安 gucci baseball hat

Floor Tile Edge Trim, 2021/05/10 17:32

louis vuitton outlet florida バレンシアガ帽子コピー店舗 Floor Tile Edge Trim

cheap jordan 6 original og off white nw maroon, 2021/05/10 19:22

Disposable Mask Manufacture グッチ時計コピー国内発送 jordan retro 1 og 2013

3m Blenderm Tape, 2021/05/11 07:30

vintage gucci belt ブランド靴スーパーコピー代引き 3m Blenderm Tape

China Custom Logo Tracksuit Men, 2021/05/11 11:14

シャネル帽子コピー店舗 louis vuitton sneakers outlet online Custom Logo Tracksuit Men

jordans release dates for 2013, 2021/05/11 13:04

Automatic Bottle Filling And Capping Machine Supplier コピーブランド cheap nike nike air jordan 6 low

authentis louis vuitton handbags pink, 2021/05/11 16:03

プラダバッグスーパーコピー Fiberglass Window Screen louis vuitton singapore sgd

jordan outlet, 2021/05/11 19:29

グッチストールコピー代引き Custom Coffee Bag jordan outlet

Book Holder, 2021/05/12 03:01

本物と同じゴヤール財布コピー louis vuitton 000/277 watch Book Holder

louis vuitton sunglasses on sale, 2021/05/12 05:26

コピーブランドズボン Rustic Folding Table louis vuitton tote bag on sale

Light Down Jacket Women, 2021/05/12 08:38

cheap nike air jordan 1 retro outlet sale sale グッチ帽子コピー Light Down Jacket Women

2-Fold Slides, 2021/05/12 11:07

louis vuitton vernis purple プラダベルトコピー店舗 2-Fold Slides

ブランド帽子スーパーコピー専門店, 2021/05/12 11:59

cheap nike air jordan shoes values Aida Embroidery Fabric グッチ帽子スーパーコピー販売店

バレンシアガ帽子偽物, 2021/05/12 16:14

louis vuitton handbags manhattan Hdmi Extender Ethernet 4k エルメスストールコピー優良サイト

スーパーコピー時計評判, 2021/05/12 17:33

sneakerfiles air jordan High Speed Camera 本物と同じティファニー指輪コピー

N級品ルイヴィトン帽子コピー, 2021/05/12 19:26

Dodge RAM Brake Booster replica louis vuitton scarf monogram necklace ルイヴィトン時計コピー代引き

Panel Lcd Monitor Factory, 2021/05/13 07:06

フェンディ靴コピー air jordan 85 evolution Panel Lcd Monitor Factory

High Speed Dyno Performance Testing Racing Power, 2021/05/13 09:46

セリーヌサングラスコピー gucci shoulder handbags High Speed Dyno Performance Testing Racing Power

ゼニス時計スーパーコピー通販店, 2021/05/13 11:37

Aluminum Alloy Door cheap jordan vii retro premio bin 23 white del sol black chllng red プラダバッグ偽物

authentic louis vuitton galliera pm azur bag, 2021/05/13 13:28

Butterfly Valve Types 本物と同じフェンディブレスレットコピー authentic louis vuitton galliera pm azur bag

フェンディ靴偽物, 2021/05/13 15:18

GUANGDONG NEW BONG NEW MATERIAL TECHNOLOGY CO., LTD. pics of gucci shoes ブランドコピー激安通販

Home Glass Vase Price, 2021/05/13 17:08

カルティエネックレスコピー国内発送 michael jordan official site Home Glass Vase Price

louis vuitton damier shoulder bags, 2021/05/13 17:59

ティファニーブレスレットスーパーコピー激安 Baby Clothe Set authetic louis vuitton marylebone gm

ディオールベルトスーパーコピー通販店, 2021/05/13 19:47

Portable Industrial Nitrogen Generator shop jordan shoes シャネル指輪コピー品

Air Filter For Purifier, 2021/05/14 09:24

air jordan xiii retro white grey silver for cheap コーチベルトスーパーコピー Air Filter For Purifier

Bracket Metal Stamping, 2021/05/14 11:11

バーバリーバッグコピー louis vuitton alma monogram vernis m91444 Bracket Metal Stamping

Products, 2021/05/14 13:00

ルイヴィトン帽子コピー品 gucci jewellery replica Products

real louis vuitton wallets and handbags, 2021/05/14 15:39

Mdf Plywood Price India 本物と同じゴヤールバッグコピー sac a main louis vuitton solde

ディオールベルトコピー, 2021/05/14 21:11

Duffel Bag Sports black louis vuitton ルイヴィトン財布コピー店舗

ロエベベルトコピー品, 2021/05/15 05:41

Concrete Sintered Diamond Saw Blade louis vuitton outlet miami fl ディオールブレスレットコピー国内発送

クロエ財布スーパーコピー激安, 2021/05/15 07:30

Metal Spinning air jordan 1 replica ブランドブルガリピアスコピー

ディオール帽子コピー品, 2021/05/15 09:22

Exterior Wood Panels louis vuitton ring price ディオール帽子コピー品

ブランドコピーtシャツ, 2021/05/15 15:01

authentic louis vuitton delightful monogram bag Low Density Pre-Expander バレンシアガ帽子スーパーコピー通販店

グッチサングラスコピー優良サイト, 2021/05/15 17:49

cheap air jordan 11 white purple 110mm Underground Pipe ティファニーネックレスブラントコピー代引き

cheap air jordan 3 cool grey, 2021/05/15 23:48

Polarimeter ピアジェ時計コピー販売店 cheap air jordan 3 cool grey

eva yoga mat, 2021/05/16 07:09

eva yoga mat

louis vuitton store online usa, 2021/05/16 08:23

Portable Nebulizer クロムハーツ指輪スーパーコピー buy louis vuitton scarfs

1.75 Fiberglass Tube, 2021/05/16 11:41

louis vuitton alma monogram multicolore ロジェヴィヴィエ靴コピー通販店 1.75 Fiberglass Tube

air jordan 19 midwest white varsity red for cheap, 2021/05/16 18:32

Stainless Steel Film ブランドグッチ財布コピー cheap air jordan 11 price december 21

gucci horsebit buckle belt, 2021/05/16 19:14

Face Mask With Shield Anti Fog ピアジェ時計偽物 louis vuitton high top sneakers

cheap hangers, 2021/05/17 17:05

jordan i flight cheap hangers

louis vuitton damier ebene alma, 2021/05/17 17:56

Oem Truck Seats authentic louis vuitton kalahari bag

vintage louis vuitton luxurious belt l889, 2021/05/18 09:07

fractional co2 laser louis vuitton shades evidence

Paint Brush Drying Rack, 2021/05/18 10:01

louis vuitton ursula strauss Paint Brush Drying Rack

cheap air, 2021/05/18 11:55

Automatic Batching Plant jordan cement 4 military blue

cheap jordan 23 exclusive, 2021/05/18 15:40

Depalletizing Robot cheap jordan 23 exclusive

Enter your comment. Wiki syntax is allowed:
analysis/nsb2016/week4.txt · Last modified: 2018/07/07 10:19 (external edit)