Project

General

Profile

Data format » History » Version 15

Anonymous, 03/05/2020 03:41 PM

1 1 Anonymous
h1. Data format
2
3 14 Anonymous
La fonction de lecture d'un fichier de données est la suivante:
4 3 Anonymous
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 15 Anonymous
Les données étant lues, on remet en forme la matrice, une ligne par période de signal:
44 1 Anonymous
45 2 Anonymous
<pre><code class="python">
46 1 Anonymous
A_reshaped = adc_A.reshape(nbFiles * rampsPerFile, samplesPerRamp)
47 15 Anonymous
</code></pre>
48 1 Anonymous
49 15 Anonymous
Ensuite, on ne garde que la partie du signal correspondant aux rampes montantes:
50
51
<pre><code class="python">
52 12 Anonymous
samplesPerDownRamp = int(samplesPerRamp/2)
53 11 Anonymous
A_rampUp = A_reshaped[:, 0:samplesPerDownRamp]
54 1 Anonymous
</code></pre>
55 15 Anonymous
56 5 Anonymous
57 13 Anonymous
On obtient ainsi une matrice contenant toutes les rampes montantes.
58
59 7 Anonymous
*Note:* dans l'exemple *2019_07_12_14_12_21*, les paramètres sont les suivants:
60 5 Anonymous
61
<pre><code class="xml">
62
<?xml version="1.0" encoding="UTF-8"?>
63
<posarmc version="2.0">
64
    <posarV2>
65
        <rampsPerBuffer value="500" units="-"/>
66
        <bufferSize value="20000000" units="byte"/>
67
        <buffersPerFile value="2" units="byte"/>
68
        <rampsPerFile value="1000" units="-"/>
69
        <fileSize value="4e+7" units="byte"/>
70
        <samplingFrequency value="2e+7" units="Hz"/>
71
        <samplesPerRamp value="20000" units="-"/>
72
        <skipNSamples value="0" units="-"/>
73
        <rampPeriod value="1000" units="-"/>
74
        <startFrequency value="9800" units="-"/>
75
        <stopFrequency value="10100" units="-"/>
76
    </posarV2>
77
</posarmc>
78
</code></pre>