Project

General

Profile

Data format » History » Version 13

Anonymous, 03/05/2020 03:34 PM

1 1 Anonymous
h1. Data format
2
3 3 Anonymous
La fonction de lecture des données est la suivantes, pour un fichier:
4
5 1 Anonymous
<pre><code class="python">
6
def readFileADLINKCh0( filename, samplesPerFile, timeSerie_A ):
7
    fd = open(filename,'rb')
8
    
9
    dum = np.fromfile(fd, dtype = np.uint16)
10
11
    timeSerie_A[:] = dum[:]
12
    
13
    fd.close()
14
</code></pre>
15 3 Anonymous
16 11 Anonymous
On fait une boucle pour lire tous les fichiers et créer une matrice contenant une ligne par fichier:
17 1 Anonymous
18
<pre><code class="python">
19 9 Anonymous
firstFile = 0
20
nbFiles = 59
21
lastFile = firstFile + nbFiles - 1
22 1 Anonymous
firstBuffer = firstFile * buffersPerFile
23 11 Anonymous
lastBuffer = (nbFiles-1) * buffersPerFile + firstBuffer
24 9 Anonymous
25 8 Anonymous
scalingFactor = 2 / 65535 
26 1 Anonymous
offset = -32768
27 10 Anonymous
28 1 Anonymous
timeSerie_A = np.zeros( samplesPerFile )
29 4 Anonymous
adc_A = np.zeros( (nbFiles, samplesPerFile) )
30 11 Anonymous
31 1 Anonymous
for k in range( nbFiles ):
32
    
33
    # read the data
34
    nb = str( int( k * buffersPerFile + firstBuffer) )
35
    filename = data_dir + "/record" + nb + ".bin"
36
    readFileADLINKCh0( filename, samplesPerFile, timeSerie_A )
37
    
38
    print("k = {}, block = {} / {}".format(k, nb, lastBuffer))
39
    
40
    adc_A[ k, : ] = (timeSerie_A + offset) * scalingFactor
41
</code></pre>
42 2 Anonymous
43 11 Anonymous
Les données étant lues, on remet en forme la matrice, une ligne par période de signal et on ne garde que le signal correspondant aux rampes montantes:
44 1 Anonymous
45 2 Anonymous
<pre><code class="python">
46
A_reshaped = adc_A.reshape(nbFiles * rampsPerFile, samplesPerRamp)
47 12 Anonymous
48
samplesPerDownRamp = int(samplesPerRamp/2)
49 11 Anonymous
A_rampUp = A_reshaped[:, 0:samplesPerDownRamp]
50 2 Anonymous
</code></pre>
51 5 Anonymous
52 13 Anonymous
On obtient ainsi une matrice contenant toutes les rampes montantes.
53
54 7 Anonymous
*Note:* dans l'exemple *2019_07_12_14_12_21*, les paramètres sont les suivants:
55 5 Anonymous
56
<pre><code class="xml">
57
<?xml version="1.0" encoding="UTF-8"?>
58
<posarmc version="2.0">
59
    <posarV2>
60
        <rampsPerBuffer value="500" units="-"/>
61
        <bufferSize value="20000000" units="byte"/>
62
        <buffersPerFile value="2" units="byte"/>
63
        <rampsPerFile value="1000" units="-"/>
64
        <fileSize value="4e+7" units="byte"/>
65
        <samplingFrequency value="2e+7" units="Hz"/>
66
        <samplesPerRamp value="20000" units="-"/>
67
        <skipNSamples value="0" units="-"/>
68
        <rampPeriod value="1000" units="-"/>
69
        <startFrequency value="9800" units="-"/>
70
        <stopFrequency value="10100" units="-"/>
71
    </posarV2>
72
</posarmc>
73
</code></pre>