`20180620a` - Testing pulser and ADC

``````# Basic math
import math
import os
# Signal processing
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import hilbert, chirp
# Custom lib
import ustk as USTk # Ultrasound toolkit
``````

Preparing the data

Let's unpack what has been acquired by the ADC pHAT.

``````for filename in os.listdir("./data/"):
if filename.endswith(".DAT"):
DATFile = os.path.join("", filename).split(".")[0]
if not os.path.isfile(DATFile+".npz"):
print DATFile+".DAT"
Arf = USTk.CreateUsPack(DATFile+".DAT")
``````
``````20180620a.DAT
20180620a.DAT
``````

Working on a specific file

``````FullLength = len(rawSignal)
print "There are ",FullLength/5000,"lines in the file of 5000 pts."
``````
``````There are  10 lines in the file of 5000 pts.
``````
``````DATFile = "20180620a"
DATA.keys()
Image, rawSignal = DATA['arr_1'], DATA['arr_0']
``````
``````for N in range(FullLength):
plt.figure(figsize=(15,5))
line = rawSignal[N*5000:(N+1)*5000]
F = 12 # acquisition speed in MHz
plt.subplot(1, 2, 1)
plt.title("Raw signal of "+DATFile+".npz on line "+str(N))
ff = [ 2*x*1000.0/(F*len(line)) for x in range(len(line))]

plt.plot(ff,line)
plt.xlabel("Time (us)")

plt.subplot(1, 2, 2)
plt.title("Spectrum "+DATFile+".npz on line "+str(N))
fftline = np.fft.fft(line)
ff = [ 12*2.0*x/(len(line)) for x in range(len(line))]
plt.plot(ff[0:len(line)/2],np.real(fftline)[0:len(line)/2],"g")
plt.plot(ff[0:len(line)/2],np.imag(fftline)[0:len(line)/2],"r")
plt.xlabel("MHz")

plt.tight_layout()
plt.savefig("lines/"+DATFile+"_line"+str(N)+"sample.jpg", bbox_inches='tight')
plt.show()
``````

``````---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)

<ipython-input-13-e92c20365350> in <module>()
12     plt.subplot(1, 2, 2)
13     plt.title("Spectrum "+DATFile+".npz on line "+str(N))
---> 14     fftline = np.fft.fft(line)
15     ff = [ 12*2.0*x/(len(line)) for x in range(len(line))]
16     plt.plot(ff[0:len(line)/2],np.real(fftline)[0:len(line)/2],"g")

/usr/local/lib/python2.7/dist-packages/numpy/fft/fftpack.pyc in fft(a, n, axis, norm)
190     if n is None:
191         n = a.shape[axis]
--> 192     output = _raw_fft(a, n, axis, fftpack.cffti, fftpack.cfftf, _fft_cache)
193     if _unitary(norm):
194         output *= 1 / sqrt(n)

/usr/local/lib/python2.7/dist-packages/numpy/fft/fftpack.pyc in _raw_fft(a, n, axis, init_function, work_function, fft_cache)
54     if n < 1:
55         raise ValueError("Invalid number of FFT data points (%d) specified."
---> 56                          % n)
57
58     # We have to ensure that only a single thread can access a wsave array

ValueError: Invalid number of FFT data points (0) specified.
``````

Doing line 0

``````N = 0
line = rawSignal[N*5000:(N+1)*5000]
F = 12 # acquisition speed in MHz
plt.figure(figsize=(15,5))
plt.subplot(1, 2, 1)
plt.title("Raw signal of "+DATFile+".npz on line "+str(N))
ff = [ 2*x*1000.0/(F*len(line)) for x in range(len(line))]

plt.plot(ff,line)
plt.xlabel("Time (us)")

plt.subplot(1, 2, 2)
plt.title("Spectrum "+DATFile+".npz on line "+str(N))
fftline = np.fft.fft(line)
ff = [ 12*2.0*x/(len(line)) for x in range(len(line))]
plt.plot(ff[0:len(line)/20],np.abs(fftline)[0:len(line)/20],"g")
#plt.plot(ff[0:len(line)/20],np.imag(fftline)[0:len(line)/20],"r")
plt.xlabel("MHz")

plt.tight_layout()
plt.savefig("lines/"+DATFile+"_line"+str(N)+"details.jpg", bbox_inches='tight')
plt.show()
``````

``````

``````