The aim of this experiment is to determine which correlate is better: scipy's correlate or norm correlate
import os, sys
nb_dir = os.path.split(os.getcwd())[0]
if nb_dir not in sys.path:
sys.path.append(nb_dir)
%matplotlib inline
%load_ext autoreload
%autoreload 2
from directdemod import source, chunker, comm, constants, filters, fmDemod, sink, amDemod, noaa, log
import numpy as np
import sys, getopt, logging
import matplotlib.pyplot as plt
log.log(console = False)
<directdemod.log.log at 0x1cc46cf1550>
To get syncs from a file we do,
sigsrc = source.IQwav("D:\\noaa\\station1_yagi_SDRSharp_20170312_060959Z_137650kHz_IQ.wav")
noaaObj = noaa.noaa(sigsrc, constants.IQ_FREQOFFSET)
syncs = noaaObj.getAccurateSync
INFO:root:Beginning FM demodulation to get audio in chunks INFO:root:Processing chunk 1 of 9 chunks INFO:root:FM demodulation successfully complete INFO:root:Beginning AM demodulation in chunks INFO:root:Processing chunk 1 of 1 chunks INFO:root:AM demodulation completed INFO:root:Beginning SyncA detection INFO:root:Done SyncA detection INFO:root:Beginning SyncB detection INFO:root:Done SyncB detection INFO:root:Beginning Accurate SyncA detection INFO:root:Detecting Sync 1 of 20 syncs INFO:root:Detecting Sync 2 of 20 syncs INFO:root:Detecting Sync 3 of 20 syncs INFO:root:Detecting Sync 4 of 20 syncs INFO:root:Detecting Sync 5 of 20 syncs INFO:root:Detecting Sync 6 of 20 syncs INFO:root:Detecting Sync 7 of 20 syncs INFO:root:Detecting Sync 8 of 20 syncs INFO:root:Detecting Sync 9 of 20 syncs INFO:root:Detecting Sync 10 of 20 syncs INFO:root:Detecting Sync 11 of 20 syncs INFO:root:Detecting Sync 12 of 20 syncs INFO:root:Detecting Sync 13 of 20 syncs INFO:root:Detecting Sync 14 of 20 syncs INFO:root:Detecting Sync 15 of 20 syncs INFO:root:Detecting Sync 16 of 20 syncs INFO:root:Detecting Sync 17 of 20 syncs INFO:root:Detecting Sync 18 of 20 syncs INFO:root:Detecting Sync 19 of 20 syncs INFO:root:Detecting Sync 20 of 20 syncs INFO:root:Accurate SyncA detection complete INFO:root:Beginning Accurate SyncB detection INFO:root:Detecting Sync 1 of 19 syncs INFO:root:Detecting Sync 2 of 19 syncs INFO:root:Detecting Sync 3 of 19 syncs INFO:root:Detecting Sync 4 of 19 syncs INFO:root:Detecting Sync 5 of 19 syncs INFO:root:Detecting Sync 6 of 19 syncs INFO:root:Detecting Sync 7 of 19 syncs INFO:root:Detecting Sync 8 of 19 syncs INFO:root:Detecting Sync 9 of 19 syncs INFO:root:Detecting Sync 10 of 19 syncs INFO:root:Detecting Sync 11 of 19 syncs INFO:root:Detecting Sync 12 of 19 syncs INFO:root:Detecting Sync 13 of 19 syncs INFO:root:Detecting Sync 14 of 19 syncs INFO:root:Detecting Sync 15 of 19 syncs INFO:root:Detecting Sync 16 of 19 syncs INFO:root:Detecting Sync 17 of 19 syncs INFO:root:Detecting Sync 18 of 19 syncs INFO:root:Detecting Sync 19 of 19 syncs INFO:root:Accurate SyncB detection complete
syncA, syncB = syncs
print("SyncA:",syncA)
print("SyncB:",syncB)
print()
print("diffSyncA:",np.diff(syncA))
print("diffSyncB:",np.diff(syncB))
print()
print("abs(diffSyncA-1024000):", np.abs(np.diff(syncA) - 1024000))
print("abs(diffSyncB-1024000):", np.abs(np.diff(syncB) - 1024000))
print()
print("sum(abs(diffSyncA-1024000)):", np.sum(np.abs(np.diff(syncA) - 1024000)))
print("sum(abs(diffSyncB-1024000)):", np.sum(np.abs(np.diff(syncB) - 1024000)))
SyncA: [1631866, 2654342, 3679930, 4701642, 5727292, 6749455, 7776132, 8800994, 9821569, 10848186, 11869576, 12894434, 13921102, 14942453, 15969017, 16992994, 18014613, 19037708] SyncB: [1631264, 2655194, 3679349, 4704140, 5727224, 6749487, 7777778, 8797587, 9821536, 10847319, 11869551, 12894413, 13921006, 14944157, 15965631, 16991343, 18014449, 19039331] diffSyncA: [1022476 1025588 1021712 1025650 1022163 1026677 1024862 1020575 1026617 1021390 1024858 1026668 1021351 1026564 1023977 1021619 1023095] diffSyncB: [1023930 1024155 1024791 1023084 1022263 1028291 1019809 1023949 1025783 1022232 1024862 1026593 1023151 1021474 1025712 1023106 1024882] abs(diffSyncA-1024000): [1524 1588 2288 1650 1837 2677 862 3425 2617 2610 858 2668 2649 2564 23 2381 905] abs(diffSyncB-1024000): [ 70 155 791 916 1737 4291 4191 51 1783 1768 862 2593 849 2526 1712 894 882] sum(abs(diffSyncA-1024000)): 33126 sum(abs(diffSyncB-1024000)): 26071
Experimental environment will be: same file and same everything except (correlate function, filter before correlation, needle type)
2 runs: variables [1st with norm correlate, 2nd with scipys correlate]
constants [hamming filter of width 492, needle varies from 11 to 244]
sigsrc = source.IQwav("D:\\noaa\\station1_yagi_SDRSharp_20170312_060959Z_137650kHz_IQ.wav")
noaaObj = noaa.noaa(sigsrc, constants.IQ_FREQOFFSET)
syncs = noaaObj.getAccurateSync
syncA1, syncB1 = syncs
INFO:root:Beginning FM demodulation to get audio in chunks INFO:root:Processing chunk 1 of 9 chunks INFO:root:FM demodulation successfully complete INFO:root:Beginning AM demodulation in chunks INFO:root:Processing chunk 1 of 1 chunks INFO:root:AM demodulation completed INFO:root:Beginning SyncA detection INFO:root:Done SyncA detection INFO:root:Beginning SyncB detection INFO:root:Done SyncB detection INFO:root:Beginning Accurate SyncA detection INFO:root:Detecting Sync 1 of 20 syncs INFO:root:Detecting Sync 2 of 20 syncs INFO:root:Detecting Sync 3 of 20 syncs INFO:root:Detecting Sync 4 of 20 syncs INFO:root:Detecting Sync 5 of 20 syncs INFO:root:Detecting Sync 6 of 20 syncs INFO:root:Detecting Sync 7 of 20 syncs INFO:root:Detecting Sync 8 of 20 syncs INFO:root:Detecting Sync 9 of 20 syncs INFO:root:Detecting Sync 10 of 20 syncs INFO:root:Detecting Sync 11 of 20 syncs INFO:root:Detecting Sync 12 of 20 syncs INFO:root:Detecting Sync 13 of 20 syncs INFO:root:Detecting Sync 14 of 20 syncs INFO:root:Detecting Sync 15 of 20 syncs INFO:root:Detecting Sync 16 of 20 syncs INFO:root:Detecting Sync 17 of 20 syncs INFO:root:Detecting Sync 18 of 20 syncs INFO:root:Detecting Sync 19 of 20 syncs INFO:root:Detecting Sync 20 of 20 syncs INFO:root:Accurate SyncA detection complete INFO:root:Beginning Accurate SyncB detection INFO:root:Detecting Sync 1 of 19 syncs INFO:root:Detecting Sync 2 of 19 syncs INFO:root:Detecting Sync 3 of 19 syncs INFO:root:Detecting Sync 4 of 19 syncs INFO:root:Detecting Sync 5 of 19 syncs INFO:root:Detecting Sync 6 of 19 syncs INFO:root:Detecting Sync 7 of 19 syncs INFO:root:Detecting Sync 8 of 19 syncs INFO:root:Detecting Sync 9 of 19 syncs INFO:root:Detecting Sync 10 of 19 syncs INFO:root:Detecting Sync 11 of 19 syncs INFO:root:Detecting Sync 12 of 19 syncs INFO:root:Detecting Sync 13 of 19 syncs INFO:root:Detecting Sync 14 of 19 syncs INFO:root:Detecting Sync 15 of 19 syncs INFO:root:Detecting Sync 16 of 19 syncs INFO:root:Detecting Sync 17 of 19 syncs INFO:root:Detecting Sync 18 of 19 syncs INFO:root:Detecting Sync 19 of 19 syncs INFO:root:Accurate SyncB detection complete
The slowest run took 882902716.37 times longer than the fastest. This could mean that an intermediate result is being cached. 1 loop, best of 3: 395 ns per loop
sigsrc = source.IQwav("D:\\noaa\\station1_yagi_SDRSharp_20170312_060959Z_137650kHz_IQ.wav")
noaaObj = noaa.noaa(sigsrc, constants.IQ_FREQOFFSET)
syncs = noaaObj.getAccurateSync
syncA2, syncB2 = syncs
INFO:root:Beginning FM demodulation to get audio in chunks INFO:root:Processing chunk 1 of 9 chunks INFO:root:FM demodulation successfully complete INFO:root:Beginning AM demodulation in chunks INFO:root:Processing chunk 1 of 1 chunks INFO:root:AM demodulation completed INFO:root:Beginning SyncA detection INFO:root:Done SyncA detection INFO:root:Beginning SyncB detection INFO:root:Done SyncB detection INFO:root:Beginning Accurate SyncA detection INFO:root:Detecting Sync 1 of 19 syncs INFO:root:Detecting Sync 2 of 19 syncs INFO:root:Detecting Sync 3 of 19 syncs INFO:root:Detecting Sync 4 of 19 syncs INFO:root:Detecting Sync 5 of 19 syncs INFO:root:Detecting Sync 6 of 19 syncs INFO:root:Detecting Sync 7 of 19 syncs INFO:root:Detecting Sync 8 of 19 syncs INFO:root:Detecting Sync 9 of 19 syncs INFO:root:Detecting Sync 10 of 19 syncs INFO:root:Detecting Sync 11 of 19 syncs INFO:root:Detecting Sync 12 of 19 syncs INFO:root:Detecting Sync 13 of 19 syncs INFO:root:Detecting Sync 14 of 19 syncs INFO:root:Detecting Sync 15 of 19 syncs INFO:root:Detecting Sync 16 of 19 syncs INFO:root:Detecting Sync 17 of 19 syncs INFO:root:Detecting Sync 18 of 19 syncs INFO:root:Detecting Sync 19 of 19 syncs INFO:root:Accurate SyncA detection complete INFO:root:Beginning Accurate SyncB detection INFO:root:Detecting Sync 1 of 19 syncs INFO:root:Detecting Sync 2 of 19 syncs INFO:root:Detecting Sync 3 of 19 syncs INFO:root:Detecting Sync 4 of 19 syncs INFO:root:Detecting Sync 5 of 19 syncs INFO:root:Detecting Sync 6 of 19 syncs INFO:root:Detecting Sync 7 of 19 syncs INFO:root:Detecting Sync 8 of 19 syncs INFO:root:Detecting Sync 9 of 19 syncs INFO:root:Detecting Sync 10 of 19 syncs INFO:root:Detecting Sync 11 of 19 syncs INFO:root:Detecting Sync 12 of 19 syncs INFO:root:Detecting Sync 13 of 19 syncs INFO:root:Detecting Sync 14 of 19 syncs INFO:root:Detecting Sync 15 of 19 syncs INFO:root:Detecting Sync 16 of 19 syncs INFO:root:Detecting Sync 17 of 19 syncs INFO:root:Detecting Sync 18 of 19 syncs INFO:root:Detecting Sync 19 of 19 syncs INFO:root:Accurate SyncB detection complete
print("SyncA1:",syncA1)
print("SyncB1:",syncB1)
print()
print("diffSyncA1:",np.diff(syncA1))
print("diffSyncB1:",np.diff(syncB1))
print()
print("abs(diffSyncA1-1024000):", np.abs(np.diff(syncA1) - 1024000))
print("abs(diffSyncB1-1024000):", np.abs(np.diff(syncB1) - 1024000))
print()
print("sum(abs(diffSyncA1-1024000)):", np.sum(np.abs(np.diff(syncA1) - 1024000)))
print("sum(abs(diffSyncB1-1024000)):", np.sum(np.abs(np.diff(syncB1) - 1024000)))
print()
print("SyncA2:",syncA2)
print("SyncB2:",syncB2)
print()
print("diffSyncA2:",np.diff(syncA2))
print("diffSyncB2:",np.diff(syncB2))
print()
print("abs(diffSyncA2-1024000):", np.abs(np.diff(syncA2) - 1024000))
print("abs(diffSyncB2-1024000):", np.abs(np.diff(syncB2) - 1024000))
print()
print("sum(abs(diffSyncA2-1024000)):", np.sum(np.abs(np.diff(syncA2) - 1024000)))
print("sum(abs(diffSyncB2-1024000)):", np.sum(np.abs(np.diff(syncB2) - 1024000)))
print()
print("diffSyncA1-diffSyncA2:", [a-b for a,b in zip(np.diff(syncA1),np.diff(syncA2))])
print("diffSyncB1-diffSyncB2:", [a-b for a,b in zip(np.diff(syncB1),np.diff(syncB2))])
print()
print("IMP RESULTS")
print()
print("NORM CORR:")
print("\tMax Deviation in diffSyncA1", np.max(np.diff(syncA1))-np.min(np.diff(syncA1)))
print("\tMax Deviation in diffSyncB1", np.max(np.diff(syncB1))-np.min(np.diff(syncB1)))
print("\tCumulative deviation from ideal SyncA1", np.sum(np.abs(np.diff(syncA1) - 1024000)))
print("\tCumulative deviation from ideal SyncB1", np.sum(np.abs(np.diff(syncB1) - 1024000)))
print()
print("SCIPY:")
print("\tMax Deviation in diffSyncA2", np.max(np.diff(syncA2))-np.min(np.diff(syncA2)))
print("\tMax Deviation in diffSyncB2", np.max(np.diff(syncB2))-np.min(np.diff(syncB2)))
print("\tCumulative deviation from ideal SyncA2", np.sum(np.abs(np.diff(syncA2) - 1024000)))
print("\tCumulative deviation from ideal SyncB2", np.sum(np.abs(np.diff(syncB2) - 1024000)))
SyncA1: [74312, 1098305, 2122304, 3146305, 4170308, 5194308, 6218313, 7242316, 8266317, 9290322, 10314324, 11338323, 12362326, 13386329, 14410332, 15434336, 16458336, 17482345, 18506342, 19530344] SyncB1: [586284, 1610285, 2634286, 3658292, 4682289, 5706290, 6730298, 7754295, 8778301, 9802301, 10826306, 11850307, 12874307, 13898313, 14922315, 15946317, 16970321, 17994322, 19018328] diffSyncA1: [1023993 1023999 1024001 1024003 1024000 1024005 1024003 1024001 1024005 1024002 1023999 1024003 1024003 1024003 1024004 1024000 1024009 1023997 1024002] diffSyncB1: [1024001 1024001 1024006 1023997 1024001 1024008 1023997 1024006 1024000 1024005 1024001 1024000 1024006 1024002 1024002 1024004 1024001 1024006] abs(diffSyncA1-1024000): [7 1 1 3 0 5 3 1 5 2 1 3 3 3 4 0 9 3 2] abs(diffSyncB1-1024000): [1 1 6 3 1 8 3 6 0 5 1 0 6 2 2 4 1 6] sum(abs(diffSyncA1-1024000)): 56 sum(abs(diffSyncB1-1024000)): 56 SyncA2: [1631866, 2654342, 3679930, 4701642, 5727292, 6749455, 7776132, 8800994, 9821569, 10848186, 11869576, 12894434, 13921102, 14942453, 15969017, 16992994, 18014613, 19037708] SyncB2: [1631264, 2655194, 3679349, 4704140, 5727224, 6749487, 7777778, 8797587, 9821536, 10847319, 11869551, 12894413, 13921006, 14944157, 15965631, 16991343, 18014449, 19039331] diffSyncA2: [1022476 1025588 1021712 1025650 1022163 1026677 1024862 1020575 1026617 1021390 1024858 1026668 1021351 1026564 1023977 1021619 1023095] diffSyncB2: [1023930 1024155 1024791 1023084 1022263 1028291 1019809 1023949 1025783 1022232 1024862 1026593 1023151 1021474 1025712 1023106 1024882] abs(diffSyncA2-1024000): [1524 1588 2288 1650 1837 2677 862 3425 2617 2610 858 2668 2649 2564 23 2381 905] abs(diffSyncB2-1024000): [ 70 155 791 916 1737 4291 4191 51 1783 1768 862 2593 849 2526 1712 894 882] sum(abs(diffSyncA2-1024000)): 33126 sum(abs(diffSyncB2-1024000)): 26071 diffSyncA1-diffSyncA2: [1517, -1589, 2289, -1647, 1837, -2672, -859, 3426, -2612, 2612, -859, -2665, 2652, -2561, 27, 2381, 914] diffSyncB1-diffSyncB2: [71, -154, -785, 913, 1738, -4283, 4188, 57, -1783, 1773, -861, -2593, 855, 2528, -1710, 898, -881] IMP RESULTS NORM CORR: Max Deviation in diffSyncA1 16 Max Deviation in diffSyncB1 11 Cumulative deviation from ideal SyncA1 56 Cumulative deviation from ideal SyncB1 56 SCIPY: Max Deviation in diffSyncA2 6102 Max Deviation in diffSyncB2 8482 Cumulative deviation from ideal SyncA2 33126 Cumulative deviation from ideal SyncB2 26071
2 runs: variables [1st with norm correlate, 2nd with scipys correlate]
constants [hamming filter of width 492, needle varies from -0.5 to 0.5]
sigsrc = source.IQwav("D:\\noaa\\station1_yagi_SDRSharp_20170312_060959Z_137650kHz_IQ.wav")
noaaObj = noaa.noaa(sigsrc, constants.IQ_FREQOFFSET)
syncs = noaaObj.getAccurateSync
syncA1, syncB1 = syncs
INFO:root:Beginning FM demodulation to get audio in chunks INFO Beginning FM demodulation to get audio in chunks INFO:root:Processing chunk 1 of 9 chunks INFO Processing chunk 1 of 9 chunks INFO:root:FM demodulation successfully complete INFO FM demodulation successfully complete INFO:root:Beginning AM demodulation in chunks INFO Beginning AM demodulation in chunks INFO:root:Processing chunk 1 of 1 chunks INFO Processing chunk 1 of 1 chunks INFO:root:AM demodulation completed INFO AM demodulation completed INFO:root:Beginning SyncA detection INFO Beginning SyncA detection INFO:root:Done SyncA detection INFO Done SyncA detection INFO:root:Beginning SyncB detection INFO Beginning SyncB detection INFO:root:Done SyncB detection INFO Done SyncB detection INFO:root:Beginning Accurate SyncA detection INFO Beginning Accurate SyncA detection INFO:root:Detecting Sync 1 of 20 syncs INFO Detecting Sync 1 of 20 syncs INFO:root:Detecting Sync 2 of 20 syncs INFO Detecting Sync 2 of 20 syncs INFO:root:Detecting Sync 3 of 20 syncs INFO Detecting Sync 3 of 20 syncs INFO:root:Detecting Sync 4 of 20 syncs INFO Detecting Sync 4 of 20 syncs INFO:root:Detecting Sync 5 of 20 syncs INFO Detecting Sync 5 of 20 syncs INFO:root:Detecting Sync 6 of 20 syncs INFO Detecting Sync 6 of 20 syncs INFO:root:Detecting Sync 7 of 20 syncs INFO Detecting Sync 7 of 20 syncs INFO:root:Detecting Sync 8 of 20 syncs INFO Detecting Sync 8 of 20 syncs INFO:root:Detecting Sync 9 of 20 syncs INFO Detecting Sync 9 of 20 syncs INFO:root:Detecting Sync 10 of 20 syncs INFO Detecting Sync 10 of 20 syncs INFO:root:Detecting Sync 11 of 20 syncs INFO Detecting Sync 11 of 20 syncs INFO:root:Detecting Sync 12 of 20 syncs INFO Detecting Sync 12 of 20 syncs INFO:root:Detecting Sync 13 of 20 syncs INFO Detecting Sync 13 of 20 syncs INFO:root:Detecting Sync 14 of 20 syncs INFO Detecting Sync 14 of 20 syncs INFO:root:Detecting Sync 15 of 20 syncs INFO Detecting Sync 15 of 20 syncs INFO:root:Detecting Sync 16 of 20 syncs INFO Detecting Sync 16 of 20 syncs INFO:root:Detecting Sync 17 of 20 syncs INFO Detecting Sync 17 of 20 syncs INFO:root:Detecting Sync 18 of 20 syncs INFO Detecting Sync 18 of 20 syncs INFO:root:Detecting Sync 19 of 20 syncs INFO Detecting Sync 19 of 20 syncs INFO:root:Detecting Sync 20 of 20 syncs INFO Detecting Sync 20 of 20 syncs INFO:root:Accurate SyncA detection complete INFO Accurate SyncA detection complete INFO:root:Beginning Accurate SyncB detection INFO Beginning Accurate SyncB detection INFO:root:Detecting Sync 1 of 19 syncs INFO Detecting Sync 1 of 19 syncs INFO:root:Detecting Sync 2 of 19 syncs INFO Detecting Sync 2 of 19 syncs INFO:root:Detecting Sync 3 of 19 syncs INFO Detecting Sync 3 of 19 syncs INFO:root:Detecting Sync 4 of 19 syncs INFO Detecting Sync 4 of 19 syncs INFO:root:Detecting Sync 5 of 19 syncs INFO Detecting Sync 5 of 19 syncs INFO:root:Detecting Sync 6 of 19 syncs INFO Detecting Sync 6 of 19 syncs INFO:root:Detecting Sync 7 of 19 syncs INFO Detecting Sync 7 of 19 syncs INFO:root:Detecting Sync 8 of 19 syncs INFO Detecting Sync 8 of 19 syncs INFO:root:Detecting Sync 9 of 19 syncs INFO Detecting Sync 9 of 19 syncs INFO:root:Detecting Sync 10 of 19 syncs INFO Detecting Sync 10 of 19 syncs INFO:root:Detecting Sync 11 of 19 syncs INFO Detecting Sync 11 of 19 syncs INFO:root:Detecting Sync 12 of 19 syncs INFO Detecting Sync 12 of 19 syncs INFO:root:Detecting Sync 13 of 19 syncs INFO Detecting Sync 13 of 19 syncs INFO:root:Detecting Sync 14 of 19 syncs INFO Detecting Sync 14 of 19 syncs INFO:root:Detecting Sync 15 of 19 syncs INFO Detecting Sync 15 of 19 syncs INFO:root:Detecting Sync 16 of 19 syncs INFO Detecting Sync 16 of 19 syncs INFO:root:Detecting Sync 17 of 19 syncs INFO Detecting Sync 17 of 19 syncs INFO:root:Detecting Sync 18 of 19 syncs INFO Detecting Sync 18 of 19 syncs INFO:root:Detecting Sync 19 of 19 syncs INFO Detecting Sync 19 of 19 syncs INFO:root:Accurate SyncB detection complete INFO Accurate SyncB detection complete
sigsrc = source.IQwav("D:\\noaa\\station1_yagi_SDRSharp_20170312_060959Z_137650kHz_IQ.wav")
noaaObj = noaa.noaa(sigsrc, constants.IQ_FREQOFFSET)
syncs = noaaObj.getAccurateSync
syncA2, syncB2 = syncs
INFO:root:Beginning FM demodulation to get audio in chunks INFO Beginning FM demodulation to get audio in chunks INFO:root:Processing chunk 1 of 9 chunks INFO Processing chunk 1 of 9 chunks INFO:root:FM demodulation successfully complete INFO FM demodulation successfully complete INFO:root:Beginning AM demodulation in chunks INFO Beginning AM demodulation in chunks INFO:root:Processing chunk 1 of 1 chunks INFO Processing chunk 1 of 1 chunks INFO:root:AM demodulation completed INFO AM demodulation completed INFO:root:Beginning SyncA detection INFO Beginning SyncA detection INFO:root:Done SyncA detection INFO Done SyncA detection INFO:root:Beginning SyncB detection INFO Beginning SyncB detection INFO:root:Done SyncB detection INFO Done SyncB detection INFO:root:Beginning Accurate SyncA detection INFO Beginning Accurate SyncA detection INFO:root:Detecting Sync 1 of 20 syncs INFO Detecting Sync 1 of 20 syncs INFO:root:Detecting Sync 2 of 20 syncs INFO Detecting Sync 2 of 20 syncs INFO:root:Detecting Sync 3 of 20 syncs INFO Detecting Sync 3 of 20 syncs INFO:root:Detecting Sync 4 of 20 syncs INFO Detecting Sync 4 of 20 syncs INFO:root:Detecting Sync 5 of 20 syncs INFO Detecting Sync 5 of 20 syncs INFO:root:Detecting Sync 6 of 20 syncs INFO Detecting Sync 6 of 20 syncs INFO:root:Detecting Sync 7 of 20 syncs INFO Detecting Sync 7 of 20 syncs INFO:root:Detecting Sync 8 of 20 syncs INFO Detecting Sync 8 of 20 syncs INFO:root:Detecting Sync 9 of 20 syncs INFO Detecting Sync 9 of 20 syncs INFO:root:Detecting Sync 10 of 20 syncs INFO Detecting Sync 10 of 20 syncs INFO:root:Detecting Sync 11 of 20 syncs INFO Detecting Sync 11 of 20 syncs INFO:root:Detecting Sync 12 of 20 syncs INFO Detecting Sync 12 of 20 syncs INFO:root:Detecting Sync 13 of 20 syncs INFO Detecting Sync 13 of 20 syncs INFO:root:Detecting Sync 14 of 20 syncs INFO Detecting Sync 14 of 20 syncs INFO:root:Detecting Sync 15 of 20 syncs INFO Detecting Sync 15 of 20 syncs INFO:root:Detecting Sync 16 of 20 syncs INFO Detecting Sync 16 of 20 syncs INFO:root:Detecting Sync 17 of 20 syncs INFO Detecting Sync 17 of 20 syncs INFO:root:Detecting Sync 18 of 20 syncs INFO Detecting Sync 18 of 20 syncs INFO:root:Detecting Sync 19 of 20 syncs INFO Detecting Sync 19 of 20 syncs INFO:root:Detecting Sync 20 of 20 syncs INFO Detecting Sync 20 of 20 syncs INFO:root:Accurate SyncA detection complete INFO Accurate SyncA detection complete INFO:root:Beginning Accurate SyncB detection INFO Beginning Accurate SyncB detection INFO:root:Detecting Sync 1 of 19 syncs INFO Detecting Sync 1 of 19 syncs INFO:root:Detecting Sync 2 of 19 syncs INFO Detecting Sync 2 of 19 syncs INFO:root:Detecting Sync 3 of 19 syncs INFO Detecting Sync 3 of 19 syncs INFO:root:Detecting Sync 4 of 19 syncs INFO Detecting Sync 4 of 19 syncs INFO:root:Detecting Sync 5 of 19 syncs INFO Detecting Sync 5 of 19 syncs INFO:root:Detecting Sync 6 of 19 syncs INFO Detecting Sync 6 of 19 syncs INFO:root:Detecting Sync 7 of 19 syncs INFO Detecting Sync 7 of 19 syncs INFO:root:Detecting Sync 8 of 19 syncs INFO Detecting Sync 8 of 19 syncs INFO:root:Detecting Sync 9 of 19 syncs INFO Detecting Sync 9 of 19 syncs INFO:root:Detecting Sync 10 of 19 syncs INFO Detecting Sync 10 of 19 syncs INFO:root:Detecting Sync 11 of 19 syncs INFO Detecting Sync 11 of 19 syncs INFO:root:Detecting Sync 12 of 19 syncs INFO Detecting Sync 12 of 19 syncs INFO:root:Detecting Sync 13 of 19 syncs INFO Detecting Sync 13 of 19 syncs INFO:root:Detecting Sync 14 of 19 syncs INFO Detecting Sync 14 of 19 syncs INFO:root:Detecting Sync 15 of 19 syncs INFO Detecting Sync 15 of 19 syncs INFO:root:Detecting Sync 16 of 19 syncs INFO Detecting Sync 16 of 19 syncs INFO:root:Detecting Sync 17 of 19 syncs INFO Detecting Sync 17 of 19 syncs INFO:root:Detecting Sync 18 of 19 syncs INFO Detecting Sync 18 of 19 syncs INFO:root:Detecting Sync 19 of 19 syncs INFO Detecting Sync 19 of 19 syncs INFO:root:Accurate SyncB detection complete INFO Accurate SyncB detection complete
print("SyncA1:",syncA1)
print("SyncB1:",syncB1)
print()
print("diffSyncA1:",np.diff(syncA1))
print("diffSyncB1:",np.diff(syncB1))
print()
print("abs(diffSyncA1-1024000):", np.abs(np.diff(syncA1) - 1024000))
print("abs(diffSyncB1-1024000):", np.abs(np.diff(syncB1) - 1024000))
print()
print("sum(abs(diffSyncA1-1024000)):", np.sum(np.abs(np.diff(syncA1) - 1024000)))
print("sum(abs(diffSyncB1-1024000)):", np.sum(np.abs(np.diff(syncB1) - 1024000)))
print()
print("SyncA2:",syncA2)
print("SyncB2:",syncB2)
print()
print("diffSyncA2:",np.diff(syncA2))
print("diffSyncB2:",np.diff(syncB2))
print()
print("abs(diffSyncA2-1024000):", np.abs(np.diff(syncA2) - 1024000))
print("abs(diffSyncB2-1024000):", np.abs(np.diff(syncB2) - 1024000))
print()
print("sum(abs(diffSyncA2-1024000)):", np.sum(np.abs(np.diff(syncA2) - 1024000)))
print("sum(abs(diffSyncB2-1024000)):", np.sum(np.abs(np.diff(syncB2) - 1024000)))
print()
print("diffSyncA1-diffSyncA2:", [a-b for a,b in zip(np.diff(syncA1),np.diff(syncA2))])
print("diffSyncB1-diffSyncB2:", [a-b for a,b in zip(np.diff(syncB1),np.diff(syncB2))])
print()
print("IMP RESULTS")
print()
print("NORM CORR:")
print("\tMax Deviation in diffSyncA1", np.max(np.diff(syncA1))-np.min(np.diff(syncA1)))
print("\tMax Deviation in diffSyncB1", np.max(np.diff(syncB1))-np.min(np.diff(syncB1)))
print("\tCumulative deviation from ideal SyncA1", np.sum(np.abs(np.diff(syncA1) - 1024000)))
print("\tCumulative deviation from ideal SyncB1", np.sum(np.abs(np.diff(syncB1) - 1024000)))
print()
print("SCIPY:")
print("\tMax Deviation in diffSyncA2", np.max(np.diff(syncA2))-np.min(np.diff(syncA2)))
print("\tMax Deviation in diffSyncB2", np.max(np.diff(syncB2))-np.min(np.diff(syncB2)))
print("\tCumulative deviation from ideal SyncA2", np.sum(np.abs(np.diff(syncA2) - 1024000)))
print("\tCumulative deviation from ideal SyncB2", np.sum(np.abs(np.diff(syncB2) - 1024000)))
SyncA1: [64474, 1088464, 2112464, 3136465, 4160468, 5184468, 6208473, 7232476, 8256477, 9280482, 10304484, 11328483, 12352486, 13376489, 14400492, 15424496, 16448496, 17472505, 18496502, 19520504] SyncB1: [576436, 1600437, 2624438, 3648443, 4672441, 5696441, 6720450, 7744447, 8768453, 9792453, 10816458, 11840459, 12864460, 13888464, 14912468, 15936469, 16960473, 17984474, 19008480] diffSyncA1: [1023990 1024000 1024001 1024003 1024000 1024005 1024003 1024001 1024005 1024002 1023999 1024003 1024003 1024003 1024004 1024000 1024009 1023997 1024002] diffSyncB1: [1024001 1024001 1024005 1023998 1024000 1024009 1023997 1024006 1024000 1024005 1024001 1024001 1024004 1024004 1024001 1024004 1024001 1024006] abs(diffSyncA1-1024000): [10 0 1 3 0 5 3 1 5 2 1 3 3 3 4 0 9 3 2] abs(diffSyncB1-1024000): [1 1 5 2 0 9 3 6 0 5 1 1 4 4 1 4 1 6] sum(abs(diffSyncA1-1024000)): 58 sum(abs(diffSyncB1-1024000)): 54 SyncA2: [74312, 1098305, 2122304, 3146305, 4170308, 5194308, 6218313, 7242316, 8266317, 9290322, 10314324, 11338323, 12362326, 13386329, 14410332, 15434336, 16458336, 17482345, 18506342, 19530344] SyncB2: [586284, 1610285, 2634286, 3658292, 4682289, 5706290, 6730298, 7754295, 8778301, 9802301, 10826306, 11850307, 12874307, 13898313, 14922315, 15946317, 16970321, 17994322, 19018328] diffSyncA2: [1023993 1023999 1024001 1024003 1024000 1024005 1024003 1024001 1024005 1024002 1023999 1024003 1024003 1024003 1024004 1024000 1024009 1023997 1024002] diffSyncB2: [1024001 1024001 1024006 1023997 1024001 1024008 1023997 1024006 1024000 1024005 1024001 1024000 1024006 1024002 1024002 1024004 1024001 1024006] abs(diffSyncA2-1024000): [7 1 1 3 0 5 3 1 5 2 1 3 3 3 4 0 9 3 2] abs(diffSyncB2-1024000): [1 1 6 3 1 8 3 6 0 5 1 0 6 2 2 4 1 6] sum(abs(diffSyncA2-1024000)): 56 sum(abs(diffSyncB2-1024000)): 56 diffSyncA1-diffSyncA2: [-3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] diffSyncB1-diffSyncB2: [0, 0, -1, 1, -1, 1, 0, 0, 0, 0, 0, 1, -2, 2, -1, 0, 0, 0] IMP RESULTS NORM CORR: Max Deviation in diffSyncA1 19 Max Deviation in diffSyncB1 12 Cumulative deviation from ideal SyncA1 58 Cumulative deviation from ideal SyncB1 54 SCIPY: Max Deviation in diffSyncA2 16 Max Deviation in diffSyncB2 11 Cumulative deviation from ideal SyncA2 56 Cumulative deviation from ideal SyncB2 56
Scipy's correlate got the best answer and it is much more faster than norm correlate. Here is the plot of the syncs extracted from whole signal
sigsrc = source.IQwav("D:\\noaa\\station1_yagi_SDRSharp_20170312_060959Z_137650kHz_IQ.wav")
noaaObj = noaa.noaa(sigsrc, constants.IQ_FREQOFFSET)
syncs = noaaObj.getAccurateSync
syncA2, syncB2 = syncs
INFO:root:Beginning FM demodulation to get audio in chunks INFO Beginning FM demodulation to get audio in chunks INFO:root:Processing chunk 1 of 9 chunks INFO Processing chunk 1 of 9 chunks INFO:root:Processing chunk 2 of 9 chunks INFO Processing chunk 2 of 9 chunks INFO:root:Processing chunk 3 of 9 chunks INFO Processing chunk 3 of 9 chunks INFO:root:Processing chunk 4 of 9 chunks INFO Processing chunk 4 of 9 chunks INFO:root:Processing chunk 5 of 9 chunks INFO Processing chunk 5 of 9 chunks INFO:root:Processing chunk 6 of 9 chunks INFO Processing chunk 6 of 9 chunks INFO:root:Processing chunk 7 of 9 chunks INFO Processing chunk 7 of 9 chunks INFO:root:Processing chunk 8 of 9 chunks INFO Processing chunk 8 of 9 chunks INFO:root:Processing chunk 9 of 9 chunks INFO Processing chunk 9 of 9 chunks INFO:root:FM demodulation successfully complete INFO FM demodulation successfully complete INFO:root:Beginning AM demodulation in chunks INFO Beginning AM demodulation in chunks INFO:root:Processing chunk 1 of 5 chunks INFO Processing chunk 1 of 5 chunks INFO:root:Processing chunk 2 of 5 chunks INFO Processing chunk 2 of 5 chunks INFO:root:Processing chunk 3 of 5 chunks INFO Processing chunk 3 of 5 chunks INFO:root:Processing chunk 4 of 5 chunks INFO Processing chunk 4 of 5 chunks INFO:root:Processing chunk 5 of 5 chunks INFO Processing chunk 5 of 5 chunks INFO:root:AM demodulation completed INFO AM demodulation completed INFO:root:Beginning SyncA detection INFO Beginning SyncA detection INFO:root:Done SyncA detection INFO Done SyncA detection INFO:root:Beginning SyncB detection INFO Beginning SyncB detection INFO:root:Done SyncB detection INFO Done SyncB detection INFO:root:Beginning Accurate SyncA detection INFO Beginning Accurate SyncA detection INFO:root:Detecting Sync 1 of 168 syncs INFO Detecting Sync 1 of 168 syncs INFO:root:Detecting Sync 2 of 168 syncs INFO Detecting Sync 2 of 168 syncs INFO:root:Detecting Sync 3 of 168 syncs INFO Detecting Sync 3 of 168 syncs INFO:root:Detecting Sync 4 of 168 syncs INFO Detecting Sync 4 of 168 syncs INFO:root:Detecting Sync 5 of 168 syncs INFO Detecting Sync 5 of 168 syncs INFO:root:Detecting Sync 6 of 168 syncs INFO Detecting Sync 6 of 168 syncs INFO:root:Detecting Sync 7 of 168 syncs INFO Detecting Sync 7 of 168 syncs INFO:root:Detecting Sync 8 of 168 syncs INFO Detecting Sync 8 of 168 syncs INFO:root:Detecting Sync 9 of 168 syncs INFO Detecting Sync 9 of 168 syncs INFO:root:Detecting Sync 10 of 168 syncs INFO Detecting Sync 10 of 168 syncs INFO:root:Detecting Sync 11 of 168 syncs INFO Detecting Sync 11 of 168 syncs INFO:root:Detecting Sync 12 of 168 syncs INFO Detecting Sync 12 of 168 syncs INFO:root:Detecting Sync 13 of 168 syncs INFO Detecting Sync 13 of 168 syncs INFO:root:Detecting Sync 14 of 168 syncs INFO Detecting Sync 14 of 168 syncs INFO:root:Detecting Sync 15 of 168 syncs INFO Detecting Sync 15 of 168 syncs INFO:root:Detecting Sync 16 of 168 syncs INFO Detecting Sync 16 of 168 syncs INFO:root:Detecting Sync 17 of 168 syncs INFO Detecting Sync 17 of 168 syncs INFO:root:Detecting Sync 18 of 168 syncs INFO Detecting Sync 18 of 168 syncs INFO:root:Detecting Sync 19 of 168 syncs INFO Detecting Sync 19 of 168 syncs INFO:root:Detecting Sync 20 of 168 syncs INFO Detecting Sync 20 of 168 syncs INFO:root:Detecting Sync 21 of 168 syncs INFO Detecting Sync 21 of 168 syncs INFO:root:Detecting Sync 22 of 168 syncs INFO Detecting Sync 22 of 168 syncs INFO:root:Detecting Sync 23 of 168 syncs INFO Detecting Sync 23 of 168 syncs INFO:root:Detecting Sync 24 of 168 syncs INFO Detecting Sync 24 of 168 syncs INFO:root:Detecting Sync 25 of 168 syncs INFO Detecting Sync 25 of 168 syncs INFO:root:Detecting Sync 26 of 168 syncs INFO Detecting Sync 26 of 168 syncs INFO:root:Detecting Sync 27 of 168 syncs INFO Detecting Sync 27 of 168 syncs INFO:root:Detecting Sync 28 of 168 syncs INFO Detecting Sync 28 of 168 syncs INFO:root:Detecting Sync 29 of 168 syncs INFO Detecting Sync 29 of 168 syncs INFO:root:Detecting Sync 30 of 168 syncs INFO Detecting Sync 30 of 168 syncs INFO:root:Detecting Sync 31 of 168 syncs INFO Detecting Sync 31 of 168 syncs INFO:root:Detecting Sync 32 of 168 syncs INFO Detecting Sync 32 of 168 syncs INFO:root:Detecting Sync 33 of 168 syncs INFO Detecting Sync 33 of 168 syncs INFO:root:Detecting Sync 34 of 168 syncs INFO Detecting Sync 34 of 168 syncs INFO:root:Detecting Sync 35 of 168 syncs INFO Detecting Sync 35 of 168 syncs INFO:root:Detecting Sync 36 of 168 syncs INFO Detecting Sync 36 of 168 syncs INFO:root:Detecting Sync 37 of 168 syncs INFO Detecting Sync 37 of 168 syncs INFO:root:Detecting Sync 38 of 168 syncs INFO Detecting Sync 38 of 168 syncs INFO:root:Detecting Sync 39 of 168 syncs INFO Detecting Sync 39 of 168 syncs INFO:root:Detecting Sync 40 of 168 syncs INFO Detecting Sync 40 of 168 syncs INFO:root:Detecting Sync 41 of 168 syncs INFO Detecting Sync 41 of 168 syncs INFO:root:Detecting Sync 42 of 168 syncs INFO Detecting Sync 42 of 168 syncs INFO:root:Detecting Sync 43 of 168 syncs INFO Detecting Sync 43 of 168 syncs INFO:root:Detecting Sync 44 of 168 syncs INFO Detecting Sync 44 of 168 syncs INFO:root:Detecting Sync 45 of 168 syncs INFO Detecting Sync 45 of 168 syncs INFO:root:Detecting Sync 46 of 168 syncs INFO Detecting Sync 46 of 168 syncs INFO:root:Detecting Sync 47 of 168 syncs INFO Detecting Sync 47 of 168 syncs INFO:root:Detecting Sync 48 of 168 syncs INFO Detecting Sync 48 of 168 syncs INFO:root:Detecting Sync 49 of 168 syncs INFO Detecting Sync 49 of 168 syncs INFO:root:Detecting Sync 50 of 168 syncs INFO Detecting Sync 50 of 168 syncs INFO:root:Detecting Sync 51 of 168 syncs INFO Detecting Sync 51 of 168 syncs INFO:root:Detecting Sync 52 of 168 syncs INFO Detecting Sync 52 of 168 syncs INFO:root:Detecting Sync 53 of 168 syncs INFO Detecting Sync 53 of 168 syncs INFO:root:Detecting Sync 54 of 168 syncs INFO Detecting Sync 54 of 168 syncs INFO:root:Detecting Sync 55 of 168 syncs INFO Detecting Sync 55 of 168 syncs INFO:root:Detecting Sync 56 of 168 syncs INFO Detecting Sync 56 of 168 syncs INFO:root:Detecting Sync 57 of 168 syncs INFO Detecting Sync 57 of 168 syncs INFO:root:Detecting Sync 58 of 168 syncs INFO Detecting Sync 58 of 168 syncs INFO:root:Detecting Sync 59 of 168 syncs INFO Detecting Sync 59 of 168 syncs INFO:root:Detecting Sync 60 of 168 syncs INFO Detecting Sync 60 of 168 syncs INFO:root:Detecting Sync 61 of 168 syncs INFO Detecting Sync 61 of 168 syncs INFO:root:Detecting Sync 62 of 168 syncs INFO Detecting Sync 62 of 168 syncs INFO:root:Detecting Sync 63 of 168 syncs INFO Detecting Sync 63 of 168 syncs INFO:root:Detecting Sync 64 of 168 syncs INFO Detecting Sync 64 of 168 syncs INFO:root:Detecting Sync 65 of 168 syncs INFO Detecting Sync 65 of 168 syncs INFO:root:Detecting Sync 66 of 168 syncs INFO Detecting Sync 66 of 168 syncs INFO:root:Detecting Sync 67 of 168 syncs INFO Detecting Sync 67 of 168 syncs INFO:root:Detecting Sync 68 of 168 syncs INFO Detecting Sync 68 of 168 syncs INFO:root:Detecting Sync 69 of 168 syncs INFO Detecting Sync 69 of 168 syncs INFO:root:Detecting Sync 70 of 168 syncs INFO Detecting Sync 70 of 168 syncs INFO:root:Detecting Sync 71 of 168 syncs INFO Detecting Sync 71 of 168 syncs INFO:root:Detecting Sync 72 of 168 syncs INFO Detecting Sync 72 of 168 syncs INFO:root:Detecting Sync 73 of 168 syncs INFO Detecting Sync 73 of 168 syncs INFO:root:Detecting Sync 74 of 168 syncs INFO Detecting Sync 74 of 168 syncs INFO:root:Detecting Sync 75 of 168 syncs INFO Detecting Sync 75 of 168 syncs INFO:root:Detecting Sync 76 of 168 syncs INFO Detecting Sync 76 of 168 syncs INFO:root:Detecting Sync 77 of 168 syncs INFO Detecting Sync 77 of 168 syncs INFO:root:Detecting Sync 78 of 168 syncs INFO Detecting Sync 78 of 168 syncs INFO:root:Detecting Sync 79 of 168 syncs INFO Detecting Sync 79 of 168 syncs INFO:root:Detecting Sync 80 of 168 syncs INFO Detecting Sync 80 of 168 syncs INFO:root:Detecting Sync 81 of 168 syncs INFO Detecting Sync 81 of 168 syncs INFO:root:Detecting Sync 82 of 168 syncs INFO Detecting Sync 82 of 168 syncs INFO:root:Detecting Sync 83 of 168 syncs INFO Detecting Sync 83 of 168 syncs INFO:root:Detecting Sync 84 of 168 syncs INFO Detecting Sync 84 of 168 syncs INFO:root:Detecting Sync 85 of 168 syncs INFO Detecting Sync 85 of 168 syncs INFO:root:Detecting Sync 86 of 168 syncs INFO Detecting Sync 86 of 168 syncs INFO:root:Detecting Sync 87 of 168 syncs INFO Detecting Sync 87 of 168 syncs INFO:root:Detecting Sync 88 of 168 syncs INFO Detecting Sync 88 of 168 syncs INFO:root:Detecting Sync 89 of 168 syncs INFO Detecting Sync 89 of 168 syncs INFO:root:Detecting Sync 90 of 168 syncs INFO Detecting Sync 90 of 168 syncs INFO:root:Detecting Sync 91 of 168 syncs INFO Detecting Sync 91 of 168 syncs INFO:root:Detecting Sync 92 of 168 syncs INFO Detecting Sync 92 of 168 syncs INFO:root:Detecting Sync 93 of 168 syncs INFO Detecting Sync 93 of 168 syncs INFO:root:Detecting Sync 94 of 168 syncs INFO Detecting Sync 94 of 168 syncs INFO:root:Detecting Sync 95 of 168 syncs INFO Detecting Sync 95 of 168 syncs INFO:root:Detecting Sync 96 of 168 syncs INFO Detecting Sync 96 of 168 syncs INFO:root:Detecting Sync 97 of 168 syncs INFO Detecting Sync 97 of 168 syncs INFO:root:Detecting Sync 98 of 168 syncs INFO Detecting Sync 98 of 168 syncs INFO:root:Detecting Sync 99 of 168 syncs INFO Detecting Sync 99 of 168 syncs INFO:root:Detecting Sync 100 of 168 syncs INFO Detecting Sync 100 of 168 syncs INFO:root:Detecting Sync 101 of 168 syncs INFO Detecting Sync 101 of 168 syncs INFO:root:Detecting Sync 102 of 168 syncs INFO Detecting Sync 102 of 168 syncs INFO:root:Detecting Sync 103 of 168 syncs INFO Detecting Sync 103 of 168 syncs INFO:root:Detecting Sync 104 of 168 syncs INFO Detecting Sync 104 of 168 syncs INFO:root:Detecting Sync 105 of 168 syncs INFO Detecting Sync 105 of 168 syncs INFO:root:Detecting Sync 106 of 168 syncs INFO Detecting Sync 106 of 168 syncs INFO:root:Detecting Sync 107 of 168 syncs INFO Detecting Sync 107 of 168 syncs INFO:root:Detecting Sync 108 of 168 syncs INFO Detecting Sync 108 of 168 syncs INFO:root:Detecting Sync 109 of 168 syncs INFO Detecting Sync 109 of 168 syncs INFO:root:Detecting Sync 110 of 168 syncs INFO Detecting Sync 110 of 168 syncs INFO:root:Detecting Sync 111 of 168 syncs INFO Detecting Sync 111 of 168 syncs INFO:root:Detecting Sync 112 of 168 syncs INFO Detecting Sync 112 of 168 syncs INFO:root:Detecting Sync 113 of 168 syncs INFO Detecting Sync 113 of 168 syncs INFO:root:Detecting Sync 114 of 168 syncs INFO Detecting Sync 114 of 168 syncs INFO:root:Detecting Sync 115 of 168 syncs INFO Detecting Sync 115 of 168 syncs INFO:root:Detecting Sync 116 of 168 syncs INFO Detecting Sync 116 of 168 syncs INFO:root:Detecting Sync 117 of 168 syncs INFO Detecting Sync 117 of 168 syncs INFO:root:Detecting Sync 118 of 168 syncs INFO Detecting Sync 118 of 168 syncs INFO:root:Detecting Sync 119 of 168 syncs INFO Detecting Sync 119 of 168 syncs INFO:root:Detecting Sync 120 of 168 syncs INFO Detecting Sync 120 of 168 syncs INFO:root:Detecting Sync 121 of 168 syncs INFO Detecting Sync 121 of 168 syncs INFO:root:Detecting Sync 122 of 168 syncs INFO Detecting Sync 122 of 168 syncs INFO:root:Detecting Sync 123 of 168 syncs INFO Detecting Sync 123 of 168 syncs INFO:root:Detecting Sync 124 of 168 syncs INFO Detecting Sync 124 of 168 syncs INFO:root:Detecting Sync 125 of 168 syncs INFO Detecting Sync 125 of 168 syncs INFO:root:Detecting Sync 126 of 168 syncs INFO Detecting Sync 126 of 168 syncs INFO:root:Detecting Sync 127 of 168 syncs INFO Detecting Sync 127 of 168 syncs INFO:root:Detecting Sync 128 of 168 syncs INFO Detecting Sync 128 of 168 syncs INFO:root:Detecting Sync 129 of 168 syncs INFO Detecting Sync 129 of 168 syncs INFO:root:Detecting Sync 130 of 168 syncs INFO Detecting Sync 130 of 168 syncs INFO:root:Detecting Sync 131 of 168 syncs INFO Detecting Sync 131 of 168 syncs INFO:root:Detecting Sync 132 of 168 syncs INFO Detecting Sync 132 of 168 syncs INFO:root:Detecting Sync 133 of 168 syncs INFO Detecting Sync 133 of 168 syncs INFO:root:Detecting Sync 134 of 168 syncs INFO Detecting Sync 134 of 168 syncs INFO:root:Detecting Sync 135 of 168 syncs INFO Detecting Sync 135 of 168 syncs INFO:root:Detecting Sync 136 of 168 syncs INFO Detecting Sync 136 of 168 syncs INFO:root:Detecting Sync 137 of 168 syncs INFO Detecting Sync 137 of 168 syncs INFO:root:Detecting Sync 138 of 168 syncs INFO Detecting Sync 138 of 168 syncs INFO:root:Detecting Sync 139 of 168 syncs INFO Detecting Sync 139 of 168 syncs INFO:root:Detecting Sync 140 of 168 syncs INFO Detecting Sync 140 of 168 syncs INFO:root:Detecting Sync 141 of 168 syncs INFO Detecting Sync 141 of 168 syncs INFO:root:Detecting Sync 142 of 168 syncs INFO Detecting Sync 142 of 168 syncs INFO:root:Detecting Sync 143 of 168 syncs INFO Detecting Sync 143 of 168 syncs INFO:root:Detecting Sync 144 of 168 syncs INFO Detecting Sync 144 of 168 syncs INFO:root:Detecting Sync 145 of 168 syncs INFO Detecting Sync 145 of 168 syncs INFO:root:Detecting Sync 146 of 168 syncs INFO Detecting Sync 146 of 168 syncs INFO:root:Detecting Sync 147 of 168 syncs INFO Detecting Sync 147 of 168 syncs INFO:root:Detecting Sync 148 of 168 syncs INFO Detecting Sync 148 of 168 syncs INFO:root:Detecting Sync 149 of 168 syncs INFO Detecting Sync 149 of 168 syncs INFO:root:Detecting Sync 150 of 168 syncs INFO Detecting Sync 150 of 168 syncs INFO:root:Detecting Sync 151 of 168 syncs INFO Detecting Sync 151 of 168 syncs INFO:root:Detecting Sync 152 of 168 syncs INFO Detecting Sync 152 of 168 syncs INFO:root:Detecting Sync 153 of 168 syncs INFO Detecting Sync 153 of 168 syncs INFO:root:Detecting Sync 154 of 168 syncs INFO Detecting Sync 154 of 168 syncs INFO:root:Detecting Sync 155 of 168 syncs INFO Detecting Sync 155 of 168 syncs INFO:root:Detecting Sync 156 of 168 syncs INFO Detecting Sync 156 of 168 syncs INFO:root:Detecting Sync 157 of 168 syncs INFO Detecting Sync 157 of 168 syncs INFO:root:Detecting Sync 158 of 168 syncs INFO Detecting Sync 158 of 168 syncs INFO:root:Detecting Sync 159 of 168 syncs INFO Detecting Sync 159 of 168 syncs INFO:root:Detecting Sync 160 of 168 syncs INFO Detecting Sync 160 of 168 syncs INFO:root:Detecting Sync 161 of 168 syncs INFO Detecting Sync 161 of 168 syncs INFO:root:Detecting Sync 162 of 168 syncs INFO Detecting Sync 162 of 168 syncs INFO:root:Detecting Sync 163 of 168 syncs INFO Detecting Sync 163 of 168 syncs INFO:root:Detecting Sync 164 of 168 syncs INFO Detecting Sync 164 of 168 syncs INFO:root:Detecting Sync 165 of 168 syncs INFO Detecting Sync 165 of 168 syncs INFO:root:Detecting Sync 166 of 168 syncs INFO Detecting Sync 166 of 168 syncs INFO:root:Detecting Sync 167 of 168 syncs INFO Detecting Sync 167 of 168 syncs INFO:root:Detecting Sync 168 of 168 syncs INFO Detecting Sync 168 of 168 syncs INFO:root:Accurate SyncA detection complete INFO Accurate SyncA detection complete INFO:root:Beginning Accurate SyncB detection INFO Beginning Accurate SyncB detection INFO:root:Detecting Sync 1 of 168 syncs INFO Detecting Sync 1 of 168 syncs INFO:root:Detecting Sync 2 of 168 syncs INFO Detecting Sync 2 of 168 syncs INFO:root:Detecting Sync 3 of 168 syncs INFO Detecting Sync 3 of 168 syncs INFO:root:Detecting Sync 4 of 168 syncs INFO Detecting Sync 4 of 168 syncs INFO:root:Detecting Sync 5 of 168 syncs INFO Detecting Sync 5 of 168 syncs INFO:root:Detecting Sync 6 of 168 syncs INFO Detecting Sync 6 of 168 syncs INFO:root:Detecting Sync 7 of 168 syncs INFO Detecting Sync 7 of 168 syncs INFO:root:Detecting Sync 8 of 168 syncs INFO Detecting Sync 8 of 168 syncs INFO:root:Detecting Sync 9 of 168 syncs INFO Detecting Sync 9 of 168 syncs INFO:root:Detecting Sync 10 of 168 syncs INFO Detecting Sync 10 of 168 syncs INFO:root:Detecting Sync 11 of 168 syncs INFO Detecting Sync 11 of 168 syncs INFO:root:Detecting Sync 12 of 168 syncs INFO Detecting Sync 12 of 168 syncs INFO:root:Detecting Sync 13 of 168 syncs INFO Detecting Sync 13 of 168 syncs INFO:root:Detecting Sync 14 of 168 syncs INFO Detecting Sync 14 of 168 syncs INFO:root:Detecting Sync 15 of 168 syncs INFO Detecting Sync 15 of 168 syncs INFO:root:Detecting Sync 16 of 168 syncs INFO Detecting Sync 16 of 168 syncs INFO:root:Detecting Sync 17 of 168 syncs INFO Detecting Sync 17 of 168 syncs INFO:root:Detecting Sync 18 of 168 syncs INFO Detecting Sync 18 of 168 syncs INFO:root:Detecting Sync 19 of 168 syncs INFO Detecting Sync 19 of 168 syncs INFO:root:Detecting Sync 20 of 168 syncs INFO Detecting Sync 20 of 168 syncs INFO:root:Detecting Sync 21 of 168 syncs INFO Detecting Sync 21 of 168 syncs INFO:root:Detecting Sync 22 of 168 syncs INFO Detecting Sync 22 of 168 syncs INFO:root:Detecting Sync 23 of 168 syncs INFO Detecting Sync 23 of 168 syncs INFO:root:Detecting Sync 24 of 168 syncs INFO Detecting Sync 24 of 168 syncs INFO:root:Detecting Sync 25 of 168 syncs INFO Detecting Sync 25 of 168 syncs INFO:root:Detecting Sync 26 of 168 syncs INFO Detecting Sync 26 of 168 syncs INFO:root:Detecting Sync 27 of 168 syncs INFO Detecting Sync 27 of 168 syncs INFO:root:Detecting Sync 28 of 168 syncs INFO Detecting Sync 28 of 168 syncs INFO:root:Detecting Sync 29 of 168 syncs INFO Detecting Sync 29 of 168 syncs INFO:root:Detecting Sync 30 of 168 syncs INFO Detecting Sync 30 of 168 syncs INFO:root:Detecting Sync 31 of 168 syncs INFO Detecting Sync 31 of 168 syncs INFO:root:Detecting Sync 32 of 168 syncs INFO Detecting Sync 32 of 168 syncs INFO:root:Detecting Sync 33 of 168 syncs INFO Detecting Sync 33 of 168 syncs INFO:root:Detecting Sync 34 of 168 syncs INFO Detecting Sync 34 of 168 syncs INFO:root:Detecting Sync 35 of 168 syncs INFO Detecting Sync 35 of 168 syncs INFO:root:Detecting Sync 36 of 168 syncs INFO Detecting Sync 36 of 168 syncs INFO:root:Detecting Sync 37 of 168 syncs INFO Detecting Sync 37 of 168 syncs INFO:root:Detecting Sync 38 of 168 syncs INFO Detecting Sync 38 of 168 syncs INFO:root:Detecting Sync 39 of 168 syncs INFO Detecting Sync 39 of 168 syncs INFO:root:Detecting Sync 40 of 168 syncs INFO Detecting Sync 40 of 168 syncs INFO:root:Detecting Sync 41 of 168 syncs INFO Detecting Sync 41 of 168 syncs INFO:root:Detecting Sync 42 of 168 syncs INFO Detecting Sync 42 of 168 syncs INFO:root:Detecting Sync 43 of 168 syncs INFO Detecting Sync 43 of 168 syncs INFO:root:Detecting Sync 44 of 168 syncs INFO Detecting Sync 44 of 168 syncs INFO:root:Detecting Sync 45 of 168 syncs INFO Detecting Sync 45 of 168 syncs INFO:root:Detecting Sync 46 of 168 syncs INFO Detecting Sync 46 of 168 syncs INFO:root:Detecting Sync 47 of 168 syncs INFO Detecting Sync 47 of 168 syncs INFO:root:Detecting Sync 48 of 168 syncs INFO Detecting Sync 48 of 168 syncs INFO:root:Detecting Sync 49 of 168 syncs INFO Detecting Sync 49 of 168 syncs INFO:root:Detecting Sync 50 of 168 syncs INFO Detecting Sync 50 of 168 syncs INFO:root:Detecting Sync 51 of 168 syncs INFO Detecting Sync 51 of 168 syncs INFO:root:Detecting Sync 52 of 168 syncs INFO Detecting Sync 52 of 168 syncs INFO:root:Detecting Sync 53 of 168 syncs INFO Detecting Sync 53 of 168 syncs INFO:root:Detecting Sync 54 of 168 syncs INFO Detecting Sync 54 of 168 syncs INFO:root:Detecting Sync 55 of 168 syncs INFO Detecting Sync 55 of 168 syncs INFO:root:Detecting Sync 56 of 168 syncs INFO Detecting Sync 56 of 168 syncs INFO:root:Detecting Sync 57 of 168 syncs INFO Detecting Sync 57 of 168 syncs INFO:root:Detecting Sync 58 of 168 syncs INFO Detecting Sync 58 of 168 syncs INFO:root:Detecting Sync 59 of 168 syncs INFO Detecting Sync 59 of 168 syncs INFO:root:Detecting Sync 60 of 168 syncs INFO Detecting Sync 60 of 168 syncs INFO:root:Detecting Sync 61 of 168 syncs INFO Detecting Sync 61 of 168 syncs INFO:root:Detecting Sync 62 of 168 syncs INFO Detecting Sync 62 of 168 syncs INFO:root:Detecting Sync 63 of 168 syncs INFO Detecting Sync 63 of 168 syncs INFO:root:Detecting Sync 64 of 168 syncs INFO Detecting Sync 64 of 168 syncs INFO:root:Detecting Sync 65 of 168 syncs INFO Detecting Sync 65 of 168 syncs INFO:root:Detecting Sync 66 of 168 syncs INFO Detecting Sync 66 of 168 syncs INFO:root:Detecting Sync 67 of 168 syncs INFO Detecting Sync 67 of 168 syncs INFO:root:Detecting Sync 68 of 168 syncs INFO Detecting Sync 68 of 168 syncs INFO:root:Detecting Sync 69 of 168 syncs INFO Detecting Sync 69 of 168 syncs INFO:root:Detecting Sync 70 of 168 syncs INFO Detecting Sync 70 of 168 syncs INFO:root:Detecting Sync 71 of 168 syncs INFO Detecting Sync 71 of 168 syncs INFO:root:Detecting Sync 72 of 168 syncs INFO Detecting Sync 72 of 168 syncs INFO:root:Detecting Sync 73 of 168 syncs INFO Detecting Sync 73 of 168 syncs INFO:root:Detecting Sync 74 of 168 syncs INFO Detecting Sync 74 of 168 syncs INFO:root:Detecting Sync 75 of 168 syncs INFO Detecting Sync 75 of 168 syncs INFO:root:Detecting Sync 76 of 168 syncs INFO Detecting Sync 76 of 168 syncs INFO:root:Detecting Sync 77 of 168 syncs INFO Detecting Sync 77 of 168 syncs INFO:root:Detecting Sync 78 of 168 syncs INFO Detecting Sync 78 of 168 syncs INFO:root:Detecting Sync 79 of 168 syncs INFO Detecting Sync 79 of 168 syncs INFO:root:Detecting Sync 80 of 168 syncs INFO Detecting Sync 80 of 168 syncs INFO:root:Detecting Sync 81 of 168 syncs INFO Detecting Sync 81 of 168 syncs INFO:root:Detecting Sync 82 of 168 syncs INFO Detecting Sync 82 of 168 syncs INFO:root:Detecting Sync 83 of 168 syncs INFO Detecting Sync 83 of 168 syncs INFO:root:Detecting Sync 84 of 168 syncs INFO Detecting Sync 84 of 168 syncs INFO:root:Detecting Sync 85 of 168 syncs INFO Detecting Sync 85 of 168 syncs INFO:root:Detecting Sync 86 of 168 syncs INFO Detecting Sync 86 of 168 syncs INFO:root:Detecting Sync 87 of 168 syncs INFO Detecting Sync 87 of 168 syncs INFO:root:Detecting Sync 88 of 168 syncs INFO Detecting Sync 88 of 168 syncs INFO:root:Detecting Sync 89 of 168 syncs INFO Detecting Sync 89 of 168 syncs INFO:root:Detecting Sync 90 of 168 syncs INFO Detecting Sync 90 of 168 syncs INFO:root:Detecting Sync 91 of 168 syncs INFO Detecting Sync 91 of 168 syncs INFO:root:Detecting Sync 92 of 168 syncs INFO Detecting Sync 92 of 168 syncs INFO:root:Detecting Sync 93 of 168 syncs INFO Detecting Sync 93 of 168 syncs INFO:root:Detecting Sync 94 of 168 syncs INFO Detecting Sync 94 of 168 syncs INFO:root:Detecting Sync 95 of 168 syncs INFO Detecting Sync 95 of 168 syncs INFO:root:Detecting Sync 96 of 168 syncs INFO Detecting Sync 96 of 168 syncs INFO:root:Detecting Sync 97 of 168 syncs INFO Detecting Sync 97 of 168 syncs INFO:root:Detecting Sync 98 of 168 syncs INFO Detecting Sync 98 of 168 syncs INFO:root:Detecting Sync 99 of 168 syncs INFO Detecting Sync 99 of 168 syncs INFO:root:Detecting Sync 100 of 168 syncs INFO Detecting Sync 100 of 168 syncs INFO:root:Detecting Sync 101 of 168 syncs INFO Detecting Sync 101 of 168 syncs INFO:root:Detecting Sync 102 of 168 syncs INFO Detecting Sync 102 of 168 syncs INFO:root:Detecting Sync 103 of 168 syncs INFO Detecting Sync 103 of 168 syncs INFO:root:Detecting Sync 104 of 168 syncs INFO Detecting Sync 104 of 168 syncs INFO:root:Detecting Sync 105 of 168 syncs INFO Detecting Sync 105 of 168 syncs INFO:root:Detecting Sync 106 of 168 syncs INFO Detecting Sync 106 of 168 syncs INFO:root:Detecting Sync 107 of 168 syncs INFO Detecting Sync 107 of 168 syncs INFO:root:Detecting Sync 108 of 168 syncs INFO Detecting Sync 108 of 168 syncs INFO:root:Detecting Sync 109 of 168 syncs INFO Detecting Sync 109 of 168 syncs INFO:root:Detecting Sync 110 of 168 syncs INFO Detecting Sync 110 of 168 syncs INFO:root:Detecting Sync 111 of 168 syncs INFO Detecting Sync 111 of 168 syncs INFO:root:Detecting Sync 112 of 168 syncs INFO Detecting Sync 112 of 168 syncs INFO:root:Detecting Sync 113 of 168 syncs INFO Detecting Sync 113 of 168 syncs INFO:root:Detecting Sync 114 of 168 syncs INFO Detecting Sync 114 of 168 syncs INFO:root:Detecting Sync 115 of 168 syncs INFO Detecting Sync 115 of 168 syncs INFO:root:Detecting Sync 116 of 168 syncs INFO Detecting Sync 116 of 168 syncs INFO:root:Detecting Sync 117 of 168 syncs INFO Detecting Sync 117 of 168 syncs INFO:root:Detecting Sync 118 of 168 syncs INFO Detecting Sync 118 of 168 syncs INFO:root:Detecting Sync 119 of 168 syncs INFO Detecting Sync 119 of 168 syncs INFO:root:Detecting Sync 120 of 168 syncs INFO Detecting Sync 120 of 168 syncs INFO:root:Detecting Sync 121 of 168 syncs INFO Detecting Sync 121 of 168 syncs INFO:root:Detecting Sync 122 of 168 syncs INFO Detecting Sync 122 of 168 syncs INFO:root:Detecting Sync 123 of 168 syncs INFO Detecting Sync 123 of 168 syncs INFO:root:Detecting Sync 124 of 168 syncs INFO Detecting Sync 124 of 168 syncs INFO:root:Detecting Sync 125 of 168 syncs INFO Detecting Sync 125 of 168 syncs INFO:root:Detecting Sync 126 of 168 syncs INFO Detecting Sync 126 of 168 syncs INFO:root:Detecting Sync 127 of 168 syncs INFO Detecting Sync 127 of 168 syncs INFO:root:Detecting Sync 128 of 168 syncs INFO Detecting Sync 128 of 168 syncs INFO:root:Detecting Sync 129 of 168 syncs INFO Detecting Sync 129 of 168 syncs INFO:root:Detecting Sync 130 of 168 syncs INFO Detecting Sync 130 of 168 syncs INFO:root:Detecting Sync 131 of 168 syncs INFO Detecting Sync 131 of 168 syncs INFO:root:Detecting Sync 132 of 168 syncs INFO Detecting Sync 132 of 168 syncs INFO:root:Detecting Sync 133 of 168 syncs INFO Detecting Sync 133 of 168 syncs INFO:root:Detecting Sync 134 of 168 syncs INFO Detecting Sync 134 of 168 syncs INFO:root:Detecting Sync 135 of 168 syncs INFO Detecting Sync 135 of 168 syncs INFO:root:Detecting Sync 136 of 168 syncs INFO Detecting Sync 136 of 168 syncs INFO:root:Detecting Sync 137 of 168 syncs INFO Detecting Sync 137 of 168 syncs INFO:root:Detecting Sync 138 of 168 syncs INFO Detecting Sync 138 of 168 syncs INFO:root:Detecting Sync 139 of 168 syncs INFO Detecting Sync 139 of 168 syncs INFO:root:Detecting Sync 140 of 168 syncs INFO Detecting Sync 140 of 168 syncs INFO:root:Detecting Sync 141 of 168 syncs INFO Detecting Sync 141 of 168 syncs INFO:root:Detecting Sync 142 of 168 syncs INFO Detecting Sync 142 of 168 syncs INFO:root:Detecting Sync 143 of 168 syncs INFO Detecting Sync 143 of 168 syncs INFO:root:Detecting Sync 144 of 168 syncs INFO Detecting Sync 144 of 168 syncs INFO:root:Detecting Sync 145 of 168 syncs INFO Detecting Sync 145 of 168 syncs INFO:root:Detecting Sync 146 of 168 syncs INFO Detecting Sync 146 of 168 syncs INFO:root:Detecting Sync 147 of 168 syncs INFO Detecting Sync 147 of 168 syncs INFO:root:Detecting Sync 148 of 168 syncs INFO Detecting Sync 148 of 168 syncs INFO:root:Detecting Sync 149 of 168 syncs INFO Detecting Sync 149 of 168 syncs INFO:root:Detecting Sync 150 of 168 syncs INFO Detecting Sync 150 of 168 syncs INFO:root:Detecting Sync 151 of 168 syncs INFO Detecting Sync 151 of 168 syncs INFO:root:Detecting Sync 152 of 168 syncs INFO Detecting Sync 152 of 168 syncs INFO:root:Detecting Sync 153 of 168 syncs INFO Detecting Sync 153 of 168 syncs INFO:root:Detecting Sync 154 of 168 syncs INFO Detecting Sync 154 of 168 syncs INFO:root:Detecting Sync 155 of 168 syncs INFO Detecting Sync 155 of 168 syncs INFO:root:Detecting Sync 156 of 168 syncs INFO Detecting Sync 156 of 168 syncs INFO:root:Detecting Sync 157 of 168 syncs INFO Detecting Sync 157 of 168 syncs INFO:root:Detecting Sync 158 of 168 syncs INFO Detecting Sync 158 of 168 syncs INFO:root:Detecting Sync 159 of 168 syncs INFO Detecting Sync 159 of 168 syncs INFO:root:Detecting Sync 160 of 168 syncs INFO Detecting Sync 160 of 168 syncs INFO:root:Detecting Sync 161 of 168 syncs INFO Detecting Sync 161 of 168 syncs INFO:root:Detecting Sync 162 of 168 syncs INFO Detecting Sync 162 of 168 syncs INFO:root:Detecting Sync 163 of 168 syncs INFO Detecting Sync 163 of 168 syncs INFO:root:Detecting Sync 164 of 168 syncs INFO Detecting Sync 164 of 168 syncs INFO:root:Detecting Sync 165 of 168 syncs INFO Detecting Sync 165 of 168 syncs INFO:root:Detecting Sync 166 of 168 syncs INFO Detecting Sync 166 of 168 syncs INFO:root:Detecting Sync 167 of 168 syncs INFO Detecting Sync 167 of 168 syncs INFO:root:Detecting Sync 168 of 168 syncs INFO Detecting Sync 168 of 168 syncs INFO:root:Accurate SyncB detection complete INFO Accurate SyncB detection complete
plt.plot(np.diff(syncA2))
plt.plot(np.diff(syncB2))
plt.show()